Foros del Web » Programando para Internet » PHP »

Buscar en varias columnas con una única consulta

Estas en el tema de Buscar en varias columnas con una única consulta en el foro de PHP en Foros del Web. Quiero que la variable $color (que está enlazada a una palabra mediante un formulario) sea buscada en tres columnas (Rojo, Azul, Verde) de la bd, ...
  #1 (permalink)  
Antiguo 10/10/2013, 11:22
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 127
Antigüedad: 12 años, 8 meses
Puntos: 2
Buscar en varias columnas con una única consulta

Quiero que la variable $color (que está enlazada a una palabra mediante un formulario) sea buscada en tres columnas (Rojo, Azul, Verde) de la bd, y muestre las que coincida en cualquiera de las tres.
He pensado esto utilizando el operador Or | pero no funciona:

Código PHP:
$sql "SELECT * FROM base WHERE Claro like '$tono' AND Verde like '$color' | Azul like '$color' | Verde like '$color'";
mysql_select_db("bd"$con); 

$result mysql_query($sql$con); 


$total mysql_num_rows($result); 
Me da error en la línea de mysql_num_rows

Gracias
  #2 (permalink)  
Antiguo 10/10/2013, 11:25
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: Buscar en varias columnas con una única consulta

Porque estás usando incorrectamente el OR:
Código MySQL:
Ver original
  1. FROM base
  2. WHERE Claro like '$tono' AND Verde like '$color' OR Azul like '$color' OR Verde like '$color'

o bien
Código MySQL:
Ver original
  1. FROM base
  2. WHERE Claro like '$tono' AND Verde like '$color' || Azul like '$color' || Verde like '$color'

No te das cuenta del errror porque no estás capturando el error ni evaluando si la sentencia devolvió algo.
Estás asumiendo que la sentencia se ejecutó bien, lo que no es necesariamente cierto.
__________________
¿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 10/10/2013, 11:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Buscar en varias columnas con una única consulta

Código MySQL:
Ver original
  1. SELECT * FROM base WHERE Claro like '$tono' AND (Verde like '$color' OR Azul like '$color' OR Verde like '$color')

Ojo a los parentesis

3*5+2=17
3*(5+2)=21

2+3*5=17
(2+3)*5=25

Claro LIKE '$tono' AND Verde LIKE '$color' OR Azul LIKE '$color' OR Verde LIKE '$color'

es lo mismo que


(Claro LIKE '$tono' AND Verde LIKE '$color') OR Azul LIKE '$color' OR Verde LIKE '$color'

y muy distinto de

Claro LIKE '$tono' AND (Verde LIKE '$color' OR Azul LIKE '$color' OR Verde LIKE '$color')


Si puedes no uses Like es mucho mas rapido =
Código MySQL:
Ver original
  1. SELECT * FROM base WHERE Claro='$tono' AND (Verde='$color' OR Azul='$color' OR Verde='$color')
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 10/10/2013 a las 11:35

Etiquetas: columnas, formulario, mysql, select, sql, variable
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:34.