Foros del Web » Programando para Internet » PHP »

Pasar variables a clausula where

Estas en el tema de Pasar variables a clausula where en el foro de PHP en Foros del Web. Hola, Tengo el siguiente Select: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT * FROM registroprofesionales WHERE categoriapro0 = $coche or categoriapro1 = $coche or categoriapro2 ...
  #1 (permalink)  
Antiguo 11/10/2013, 04:39
Avatar de maligix  
Fecha de Ingreso: julio-2011
Ubicación: Barcelona
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 2
Pasar variables a clausula where

Hola,

Tengo el siguiente Select:
Código MySQL:
Ver original
  1. SELECT * FROM registroprofesionales
  2. WHERE categoriapro0=$coche or categoriapro1=$coche or categoriapro2=$coche
  3. ORDER BY nombreempresa ASC
  4. LIMIT '.(($resul_x_libro)*$resul_x_pagina).', '.$resul_x_pagina

...y no encuentro la manera de pasar la variable coche he probado con comillas ' ' y "" y tampoco funciona.
¿Que es lo que pasa?

Manuel.

Última edición por gnzsoloyo; 11/10/2013 a las 06:49 Razón: Código de programación no permitido en foros de BBDD.
  #2 (permalink)  
Antiguo 11/10/2013, 06:53
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: Pasar variables a clausula where

Por lo pronto, el 99% de las veces, el problema en casos como el tuyo es producto de:
1) Variables que no contienen lo que el programador cree que tienen. Deberás verificar el valor real que poseen las variables al momento de quedar construida la consulta.
2) Errores de programación (sesibilidad mayusculas/minusculas, tipos de cadena en funcion de apostrofos y comillas, etc.)

En principio, para nuestro entendimiento del problema, ¿Qué tipo de dato son categoriapro0, categoriapro1 y categoriapro2? ¿VARCHAR o INT?
Según sea eso, es la forma que en programación tendrás que crear la consulta.
El resto, son temas de PHP, que es OFF TOPIC en este foro.
__________________
¿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 11/10/2013, 10:50
Avatar de maligix  
Fecha de Ingreso: julio-2011
Ubicación: Barcelona
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: Pasar variables a clausula where

La variable coche contiene un strig pasado por Url y recogido con $Get.

He comprobado que $coche contiene el string antes de pasar a la consulta.

categoriapro0, categoriapro1 y categoriapro2 son VARCHAR

Gracias por responder.
  #4 (permalink)  
Antiguo 11/10/2013, 11:02
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: Pasar variables a clausula where

Cita:
categoriapro0, categoriapro1 y categoriapro2 son VARCHAR
Si son VARCHAR, deben ser evaluados como cadenas de texto, y tal como lo scribes, estás haciéndolo como números.
Recuerda un detalle muy importante: MySQL no es parte de PHP, por lo que no ve, ni entiende de variables. De hecho PHP no interactúa realmente con MySQL, sino que lo hace la librería que usas, que accede a un servicio. Ese servicio es leído por MySQL y a ese servicio es a donde MySQL envía la respuesta.
Eso significa que lo que en realidad recibe MySQL es una cadena de texto que contiene una consulta, la cual debe forzosamente estar correctamente construida, y no lo está.
Como no hay errores sintácticos, enviaré el tema a PHP.

Anticipandome a eso, lo mejor, para evitarte problemas con los apóstrofes, es que lo armes mas o menos así:
Código PHP:
$offset $resul_x_libro $resul_x_pagina ;
$consulta "SELECT * FROM registroprofesionales 
WHERE categoriapro0 = '$coche' OR categoriapro1 = '$coche' OR categoriapro2 = '$coche' 
ORDER BY nombreempresa ASC 
LIMIT $offset, $resul_x_pagina"

Aunque yo lo prefiero armar así, para hacer las cosas más comrpensibles:
Código PHP:
$offset $resul_x_libro $resul_x_pagina ;
$consulta "SELECT * ";
$consulta .= " FROM registroprofesionales ";
$consulta .= " WHERE categoriapro0 = '$coche' OR categoriapro1 = '$coche' OR categoriapro2 = '$coche' ";
$consulta .= " ORDER BY nombreempresa ASC ";
$consulta .= " LIMIT $offset, $resul_x_pagina";
// Para asegurarnos de lo obtenido, y verificar que lo que queda armado tiene los datos necesarios:
echo $consulta
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 11/10/2013 a las 14:18

Etiquetas: clausula, mysql, registro, select, variables
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 07:57.