| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
david_celta
Registrado: 02 Jun 2005 Mensajes: 71
| Publicado: 12/11/2007 5:02 pm | | | Título: LIKE con mysql (y php) |
| ¿Haber alguien de por aqui sabe php con mysql, mas mysql que php o SQL o bases de datos?
Cuando se usa LIKE (me he dado cuenta que tambien ocurre en SQL) la cantidad de filas devueltas no es la correcta, alguien sabe ¿por que?
Probe un codigo SQL parecido a este:
consulta="select * from tabla where like campo '%$buscar%'"
Le ingreso cualquier palabra (incluso letras y cadena vacia) y SIEMPRE me devuelve 0 registros encontrados
Suponiendo:
consulta=mysql_query(...) fila=mysql_fetch_assoc(...) total=mysql_num_rows(...)
if(total==0).... else// mostrar los registros
El problema es que siempre entra al if(total==0), pero se me ocurrio imprimir la fila (echo fila['campo'] y me mostro un registro correcto
¿Alguna idea de porque sucede esto? (y como se solucionaría)
Es algo en la consulta supongo, porque cuando lo he probado en SQL server (la misma consulta) tampoco me devuelve el numero correcto de filas
Y si estoy equivocado, me dicen. _________________ Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón. |
| | Volver arriba | |  | grandzam
Registrado: 10 Feb 2005 Mensajes: 144
| Publicado: 12/11/2007 9:56 pm | | | Título: |
| Ahora no recuerdo bien pero creo que like va despues de campo:
| Código: | consulta="select * from tabla where campo like '%$buscar%'"; |
ademas, le falto el $... a la variable consulta, pero creo que eso fue error de dedo cuando escribiste este mensaje. Checa bien de todos modos.
despues de eso intenta hacer:
imprime la variable $buscar;
| Código: | echo "Buscar: ".$buscar; |
Si la variable buscar no se imprime u ocurre algo extraño es porque no estas recibiendo bien la variable desde el formulario. Si es eso, entonces intenta:
| Código: | $buscar=$_POST['buscar']; |
o utilizando el método get:
| Código: | $buscar=$_GET['buscar']; |
si no es eso, entonces:
| Código: | $resultado=mysql_query($consulta, $link); |
donde $link es el link a la bd, bueno ya sabes...
enseguida intenta hacer esto:
| Código: | echo "Numero de renglones: ".@mysql_num_rows($resultado); |
y a ver que te sale...
ah y cierra la conexion una vez terminado lo que tengas que hacer con ella.
No se bien cual sea bien tu problema porque tendria que ver tu formulario, tu codigo, y tu tabla de la bd... pero tal vez sea algo de eso, sino ps vuelve a postear con los datos que tengas y ya veremos, a ver si alguien mas o yo mismo te podemos ayudar... |
| | Volver arriba | |  | david_celta
Registrado: 02 Jun 2005 Mensajes: 71
| Publicado: 14/11/2007 5:32 pm | | | Título: |
| Buenosi, like va despues pero ese no era el problema, en si el problema no es que no funcione, si funciona, es decir, hago la consulta con like y todo biemn hechecito y obtengo los resultados que quiero, excepto UNO: el numero total de filas (no me devuelve el valor que deberia)
Por Ejemplo: Todos los nombres que lleven una J en cualquier parte:
select nombres like '%J%' (obviamente la J esta en una variable $buscar que se ingresa mediante una caja de texto y todo eso)
Me devuelve supongamos: Juan Jose Julio aJuar baJito
Hasta ahi bien, pero si miro el total de filas (mysql_num_rows($resultado)) que me devuelve, me da 0 (cero, nada)
Entonces mi pregunta va mas por ese lado, porque si hace la consulta correctamente y obtiene los datos correctos, devuelve un numero de filas equivocado (lo cual genera el problema adicional si quiero mostrar esos datos por partes, ya que no tengo la cantidad exacta de filas, a menos que las cuente una por una)
Mi duda es referente a mysql_num_row() cuando se usa un LIKE '%$var%' _________________ Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |