Foros del Web » Programando para Internet » PHP »

Unknown column 'M' in 'where clause'

Estas en el tema de Unknown column 'M' in 'where clause' en el foro de PHP en Foros del Web. mmmmmmmmm............ No entiendo porque me sale esto, ni por donde empezar a buscar el error... Alguna idea ?...
  #1 (permalink)  
Antiguo 02/02/2012, 17:28
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Unknown column 'M' in 'where clause'

mmmmmmmmm............ No entiendo porque me sale esto, ni por donde empezar a buscar el error...

Alguna idea ?
  #2 (permalink)  
Antiguo 02/02/2012, 17:33
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Unknown column 'M' in 'where clause'

Si no sabes vos, crees que nosotros vamos a adivinar?

Cita:
columna desconocida 'M' en 'cláusula where'
Muestra tu código por favor
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 02/02/2012, 17:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Unknown column 'M' in 'where clause'

Cita:
Unknown column 'M' in 'where clause'
Normalmente aparece cuando has escrito el nombre de una columna en el WHERE que no existe en ninguna de las tablas del FROM.
Este tipo de errores son comunes en los principiantes cuando mezclan código d eprogramación con SQL sin tener en cuenta las reglas de cada uno. Lo más probable es que "M" sea el contenido de una variable que tu estás usando para crear una comparación del tipo WHERE A = B, donde A es una columna de tipo VARCHAR o CHAR, y B es una cadena de texto, pero lo estás haciendo de modo que el contenido de B no quede representado como cadena.
Las cadenas de texto, en MySQL se deben encerrar entre apóstrofos ('), no entre comillas (") o acentos inversos (`), los cuales se usan para encerrar los nombres de tablas, columnas o bases.
Entonces:
1) No uses apóstrofos para crear la cadena de la sentencia, usa comillas.
2) Pon las variables que contengan cadenas de texto entre apóstrofos dentro de la consulta SQL.
3) No pongas apóstrofos si vas a comparar valores numéricos (exigen conversiones).
O sea:
Código PHP:
Ver original
  1. $query = "SELECT a, b, c, d FROM tabla WHERE a = '$variable';";
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 02/02/2012, 17:41
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Unknown column 'M' in 'where clause'

Ya ya... Pfff... Es que no sabia ni por donde empezar... A ver voy a ello...

$valorrespuesta = comprobarexistencia($_GET['recordID'],$_GET['FTalla']);

if ($valorrespuesta!=0){
$insertSQL = sprintf("UPDATE tblcarrito SET intCantidad = intCantidad +1 WHERE intContador = %s",
$_GET['intCantidad'],
$valorrespuesta);
}

else {
$insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad, strTalla) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
GetSQLValueString($_GET['recordID'], "text"),
GetSQLValueString($_GET['intCantidad']),
GetSQLValueString($_GET['FTalla'], "text"));
}

Cuando intento comprar otro producto que no tenga la misma talla o no este en el carrito, ahora me aparece esto:

( ! ) Notice: Undefined index: FTalla in C:\wamp\www\zulo\carrito_add.php on line 38
Call Stack
# Time Memory Function Location
1 0.0016 395560 {main}( ) ..\carrito_add.php:0
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

mmmmmmm......... En la linea 38 hay esto:

$valorrespuesta = comprobarexistencia($_GET['recordID'],$_GET['FTalla']);

Antes de añadir esa linea, si me funcionaba todo... No entiendo porque no me esta funcionando el get... Que lo tengo asi:

Tallas: <select name="FTalla">

<?php do {
?>
<option value="<?php echo $row_ConsultaFuncion['strNombre']?>"><?php echo $row_ConsultaFuncion['strNombre']?></option>
<?php
} while ($row_ConsultaFuncion = mysql_fetch_assoc($ConsultaFuncion));
?>
</select>

No se... Anteriormente me funcionaba el get... FTalla
  #5 (permalink)  
Antiguo 02/02/2012, 18:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Unknown column 'M' in 'where clause'

Porque los otros tres datos son numéricos, y como te dije (ver post anterior), los numéricos van sin apóstrofos... ¿Lo leíste?
Código PHP:
Ver original
  1. else {
  2. $insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad, strTalla) VALUES (%s, %s, %s, '%s')",
  3. GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
  4. GetSQLValueString($_GET['recordID'], "text"),
  5. GetSQLValueString($_GET['intCantidad']),
  6. GetSQLValueString($_GET['FTalla'], "text"));
  7. }
El GetSQLValueString reemplaza al %s de tu sentencia con el valor contenido en la variable. Pero no le agrega los apóstrofes necesarios para que sea reconocido como cadena.
Trata de razonar lo que te expliq
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 02/02/2012, 18:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Unknown column 'M' in 'where clause'

Porque los otros tres datos son numéricos, y como te dije (ver post anterior), los numéricos van sin apóstrofos... ¿Lo leíste?
Código PHP:
Ver original
  1. else {
  2. $insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad, strTalla) VALUES (%s, %s, %s, '%s')",
  3. GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
  4. GetSQLValueString($_GET['recordID'], "text"),
  5. GetSQLValueString($_GET['intCantidad']),
  6. GetSQLValueString($_GET['FTalla'], "text"));
  7. }
El GetSQLValueString reemplaza al %s de tu sentencia con el valor contenido en la variable. Pero no le agrega los apóstrofos necesarios para que sea reconocido como cadena.
Creí que había sido suficientemente claro...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 03/02/2012, 04:04
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Unknown column 'M' in 'where clause'

Me sigue saliendo lo mismo ...

Unknown column 'M' in 'where clause'

$insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad, strTalla) VALUES (%s, %s, %s, '%s')",
GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
GetSQLValueString($_GET['recordID'], "text"),
GetSQLValueString($_GET['intCantidad']),
GetSQLValueString($_GET['FTalla'], "text"));

EDITO:

Hice lo que me dijiste aqui tambien:

$query_ConsultaFuncion = sprintf("SELECT * FROM tblcarrito WHERE idUsuario = %s AND idProducto = %s AND strTalla = '%s'", $_SESSION['MM_IdUsuario'], $idproducto, $idtalla);

Y ahora no me da error... Pero si no hay talla en la base de datos... Al lado de la prenda de ropa me pone (NULL) y antes no ponia nada, simplemente ()...

Ademas cuando es la misma prenda con la misma talla si existe en el carrito, no me la suma. Simplemente no hace nada... :S

EDITO2: Ya solucione el tema de que se sumen las prendas cuando coincida la talla y el producto. Asi:

if ($valorrespuesta!=0){
$insertSQL = sprintf("UPDATE tblcarrito SET intCantidad = intCantidad + %s WHERE intContador = %s",
$_GET['intCantidad'],
$valorrespuesta);

Lo que no se que hacer es con lo de (NULL) yo no quiero que aparezca NULL, con que aparezca vacio "()" Ya me vale...

Última edición por nobo; 03/02/2012 a las 04:18
  #8 (permalink)  
Antiguo 04/02/2012, 14:38
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Unknown column 'M' in 'where clause'

Tal y como me pusiste tu:

else {
$insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad, strTalla) VALUES (%s, %s, %s, '%s')",
GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
GetSQLValueString($_GET['recordID'], "text"),
GetSQLValueString($_GET['intCantidad']),
GetSQLValueString($_GET['FTalla'], "text"));
}

Me da el siguiente error:

Unknown column 'M' in 'where clause'

Cuando el producto tiene talla...

Cuando el producto no tiene talla dice lo siguiente.. :

( ! ) Notice: Undefined index: FTalla in C:\wamp\www\zulo\carrito_add.php on line 38
Call Stack
# Time Memory Function Location
1 0.0017 395288 {main}( ) ..\carrito_add.php:0
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

El tema es que parece estar haciendolo bien porque en la url sale lo siguiente:

http://localhost/zulo/carrito_add.ph...=1&recordID=15
Cuando hay talla...

Pero cuando no hay talla, efectivamente falta el parametro FTalla...:

http://localhost/zulo/carrito_add.ph...d=1&recordID=3

Lo raro es que antes de añadir esto:
$valorrespuesta = comprobarexistencia($_GET['recordID'], $_GET['FTalla']);

Si funcionaba todo bien...

Siguiendo tus consejos probe en poner " ' ' " apostrofes en la funcion comprobarexistencia... Y lo hace bastante bien pero cuando no hay talla me pone (NULL) como dije en el post de arriba y eso antes no pasaba... No se porque ahora si. Ademas me surge otra duda... Si quisiera poner numeros ? Imprimiria los numeros asi '%s' ?
  #9 (permalink)  
Antiguo 04/02/2012, 17:58
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Unknown column 'M' in 'where clause'

RESUELTO...

Tenia el recordID como "text" lo cambie por "int" y funciona perfecto ;)

Etiquetas: column, resuelto, unknown
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:42.