Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Unknown column, pero no me refiero a una columna

Estas en el tema de Unknown column, pero no me refiero a una columna en el foro de Mysql en Foros del Web. La siguiente consulta funciona perfectamente en MYSQL Workbench @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT *, COUNT ( P . idpost ) count_post FROM posts ...
  #1 (permalink)  
Antiguo 21/03/2014, 05:37
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Unknown column, pero no me refiero a una columna

La siguiente consulta funciona perfectamente en MYSQL Workbench

Código SQL:
Ver original
  1. SELECT *, COUNT(P.idpost) count_post FROM posts P
  2.                                 INNER JOIN
  3.                                         subcategories S
  4.                                 ON
  5.                                         S.idsubcategorie=P.idsubcategorie
  6.                                 WHERE
  7.                                         S.subcategorie='PHP'

Pero al utilizarla en una clase PHP donde la cláusula del WHERE sustituyo PHP por una variable para hacer la consulta dinámica, no funciona

Código SQL:
Ver original
  1. SELECT *, COUNT(P.idpost) count_post FROM posts P
  2.                                 INNER JOIN
  3.                                         subcategories S
  4.                                 ON
  5.                                         S.idsubcategorie=P.idsubcategorie
  6.                                 WHERE
  7.                                         S.subcategorie=$subcategorie

Me devuelve este problema

Cita:
Unknown column 'PHP' in 'where clause'
He repasado la consulta una y otra vez y no se me ocurre el motivo por el cual está fallando. Cabe decir que en la BD sí tengo una entrada donde subcategorie es PHP, pero ahí me indica que la columna no existe :S es curioso porque en la consulta no me refiero a una columna, sino a una entrada :S
__________________
Ayúdame a hacerlo por mi mismo.
  #2 (permalink)  
Antiguo 21/03/2014, 06:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Unknown column, pero no me refiero a una columna

Es que estás cometiendo un error en la programación...
El tema es que MySQL no entiende PHP, y por ende tampoco entiende variables de PHP. Por esta razón, cuando creas dinámicamente una sentencia, debes asegurarte de que aquellos valores que sean cadenas de texto, en el SQL queden encerrados entre apóstrofos.
Los apóstrofos que determinan las cadenas no son puestos por la librería de enlace a datos, los tienes que poner tu en el script.
Para que se entienda claramente, cuando haces esto:

Código MySQL:
Ver original
  1. SELECT *, COUNT(P.idpost) count_post
  2. FROM posts P INNER JOIN subcategories S ON S.idsubcategorie=P.idsubcategorie
  3. WHERE S.subcategorie=$subcategorie

y el valor de $subcategorie es "PHP", la sintaxis que realmente recibe MySQL es:

Código MySQL:
Ver original
  1. SELECT *, COUNT(P.idpost) count_post
  2. FROM posts P INNER JOIN subcategories S ON S.idsubcategorie=P.idsubcategorie
  3. WHERE S.subcategorie=PHP
En ese contexto, "PHP" no es una cadena de texto, en el nombre de un objeto, y MySQL asume que se trata de una columna, dada la sintaxis.

¿Se entiende?

La solución (que es tema de programación, en realidad), es que la variable quede entre los apostrofos que deben tener:

Código MySQL:
Ver original
  1. SELECT *, COUNT(P.idpost) count_post
  2. FROM posts P INNER JOIN subcategories S ON S.idsubcategorie=P.idsubcategorie
  3. WHERE S.subcategorie='$subcategorie'

Siempre recordando que esa es una solución de un problema de programación, no de SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/03/2014, 07:15
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Unknown column, pero no me refiero a una columna

Muchas gracias gnzsoloyo! efectivamente ahí estaba el problema.
__________________
Ayúdame a hacerlo por mi mismo.

Etiquetas: column, columna, join, php, select, sql, 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 01:20.