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

imposible buscar datos en mysql

Estas en el tema de imposible buscar datos en mysql en el foro de Mysql en Foros del Web. he probado con miles de codigos ya y no he logrado nada, tengo una base de datos muy simple que consiste de: dato1,dato2,dato3,dato4,dato5,dato6,dato7 (mayuscula) la ...
  #1 (permalink)  
Antiguo 30/10/2011, 17:31
Avatar de WeFi  
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta imposible buscar datos en mysql

he probado con miles de codigos ya y no he logrado nada, tengo una base de datos muy simple que consiste de:

dato1,dato2,dato3,dato4,dato5,dato6,dato7 (mayuscula)

la base de datos se llama: db
la tabla se llama: basededatos

y quiero hacer un buscador, entonces hice un html, donde coloque un formulario:

Código HTML:
Ver original
  1. <form action="buscando.php" method="post">
  2. Tipo de Búsqueda:<br>
  3. <select name="abuscar" size="1">
  4.   <option value="DATO1" selected="selected">DATO1</option>
  5.   <option value="DATO2">DATO2</option>
  6.   <option value="DATO3">DATO3</option>
  7. <br>
  8. ¿Qué deseas buscar?:<br>
  9. <input name="busqueda" type=text />
  10. <br>
  11. <input type="submit" name="BUSCAR" id="BUSCAR" value="Buscar" />
  12. </form>

y cree el php de buscando.php con:

Código PHP:
Ver original
  1. <?php
  2. $host = "local";
  3. $database = "db";
  4. $user = "rooting";
  5. $password = "bdfsgdsfgdfgsdfgs";
  6. $tabla = "basededatos";
  7. $dato = $_POST[busqueda];
  8. mysql_connect($host,$user,$password);
  9. mysql_select_db("basededatos");
  10. $query = mysql_query("Select * from basededatos where $_POST[busqueda]");
  11. printf("<tr><td>DATO1 </td><td>DATO2 </td><td>DATO3 </td><td>DATO4 </td><td>DATO5 </td><td>DATO6 </td><td>DATO7 </td></tr>");
  12. while($row=@mysql_fetch_array($query)){
  13.     printf("$dato");
  14.     printf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>, $row["DATO1"],$row["DATO2"],$row["DATO3"],$row["DATO4"],$row["DATO5"],$row["DATO6"],$row["DATO7"]');
  15. }
  16. ?>

pero no logro ver nada, por mas que ponga un valor que este en el tabla no logro ver nada. cual es el error?
  #2 (permalink)  
Antiguo 30/10/2011, 19:44
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: imposible buscar datos en mysql

Cita:
pero no logro ver nada, por mas que ponga un valor que este en el tabla no logro ver nada. cual es el error?
Es que necesitas leer un poco más acerca de SQL básico. Esa supuesta "consulta" en realidad no hace nada. No puede devolverte datos porque el WHERE carece de condiciones.
Supongamos que lo que quisieras buscar es la palabra "perro", y que eso fuese lo que el usuario ingresa en el formulario (dicho sea de paso, los temas de formularios no son asunto de este foro, acá la cosa es SQL). Entonces quedaría mas o menos así:

Código MySQL:
Ver original
  1. Select * from basededatos where perro
1) En ese contexto, "perro" es un nombre de columna, por lo que inmediatamente debería devolverte un error "Columna desconocida en el WHERE". Para que fuese considerado cadena de texto debe forzosamente estar encerrada entre apóstrofes (').
2) Si fuese una cadena de texto, tampoco diría nada, porque
Código MySQL:
Ver original
  1. Select * from basededatos where 'perro'
no le dice al MySQL qué quieres hacer con la palabra "perro". ¿Está contenida en alguna columna? ¿En cuál?
La cosa sería:
Código MySQL:
Ver original
  1. Select * from basededatos where dato1 = 'perro'
o bien, si es una de las palabras contenidas:
Código MySQL:
Ver original
  1. Select * from basededatos where dato1 LIKE '%perro%'
3) Si lo que quieres es que busque en todas las columnas de datos, entonces deberás indicarlo:
Código MySQL:
Ver original
  1. from basededatos
  2. where dato1 LIKE '%perro%' OR dato2 LIKE '%perro%' OR dato3 LIKE '%perro%' OR dato4 LIKE '%perro%' OR

Procura leer un poco más sobre SQL, y hacer algunas prácticas antes de meterte a preparar las consultas que realmente usarás. Te ahorrará dolores de cabeza.
__________________
¿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 30/10/2011, 20:02
Avatar de WeFi  
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: imposible buscar datos en mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Es que necesitas leer un poco más acerca de SQL básico. Esa supuesta "consulta" en realidad no hace nada. No puede devolverte datos porque el WHERE carece de condiciones.
Supongamos que lo que quisieras buscar es la palabra "perro", y que eso fuese lo que el usuario ingresa en el formulario (dicho sea de paso, los temas de formularios no son asunto de este foro, acá la cosa es SQL). Entonces quedaría mas o menos así:

Código MySQL:
Ver original
  1. Select * from basededatos where perro
1) En ese contexto, "perro" es un nombre de columna, por lo que inmediatamente debería devolverte un error "Columna desconocida en el WHERE". Para que fuese considerado cadena de texto debe forzosamente estar encerrada entre apóstrofes (').
2) Si fuese una cadena de texto, tampoco diría nada, porque
Código MySQL:
Ver original
  1. Select * from basededatos where 'perro'
no le dice al MySQL qué quieres hacer con la palabra "perro". ¿Está contenida en alguna columna? ¿En cuál?
La cosa sería:
Código MySQL:
Ver original
  1. Select * from basededatos where dato1 = 'perro'
o bien, si es una de las palabras contenidas:
Código MySQL:
Ver original
  1. Select * from basededatos where dato1 LIKE '%perro%'
3) Si lo que quieres es que busque en todas las columnas de datos, entonces deberás indicarlo:
Código MySQL:
Ver original
  1. from basededatos
  2. where dato1 LIKE '%perro%' OR dato2 LIKE '%perro%' OR dato3 LIKE '%perro%' OR dato4 LIKE '%perro%' OR

Procura leer un poco más sobre SQL, y hacer algunas prácticas antes de meterte a preparar las consultas que realmente usarás. Te ahorrará dolores de cabeza.
gracias gnzsoloyo, ire probando y me metare mas a leer sobre sql.
  #4 (permalink)  
Antiguo 31/10/2011, 06:12
Avatar de WeFi  
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: imposible buscar datos en mysql

estebue probando,

Código MySQL:
Ver original
  1. $consulta="SELECT * FROM basededatos WHERE '$dato1' LIKE '$buscar'";

y no obtengo nada, pero si vuelvo a visitar el sitio, me aparece toda la lista de todas las cosas.
  #5 (permalink)  
Antiguo 31/10/2011, 08:19
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: imposible buscar datos en mysql

Así como lo pones, $dato1 es una cadena de texto, y $buscar es otra cadena de texto.
No estás buscando datos en la tabla.
Los apóstrofes deben ir sólo en las cadenas de texto, no en los nombres de columnas.
__________________
¿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 31/10/2011, 16:43
Avatar de WeFi  
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: imposible buscar datos en mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Así como lo pones, $dato1 es una cadena de texto, y $buscar es otra cadena de texto.
No estás buscando datos en la tabla.
Los apóstrofes deben ir sólo en las cadenas de texto, no en los nombres de columnas.
solucionado, gracias gnzsoloyo por tu ayuda. quedaria asi:

Código MySQL:
Ver original
  1. $consulta="SELECT * FROM basededatos WHERE $columna LIKE '$buscar'";

Etiquetas: mysql+php, php
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 12:19.