Foros del Web » Programando para Internet » PHP »

consulta sql desde php siempre me da 0

Estas en el tema de consulta sql desde php siempre me da 0 en el foro de PHP en Foros del Web. esta consulta me da 0 registros pero deberia darme 3 registros pongo el codigo por si me estoy perdiendo algo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver ...
  #1 (permalink)  
Antiguo 21/11/2013, 08:16
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
consulta sql desde php siempre me da 0

esta consulta me da 0 registros pero deberia darme 3 registros pongo el codigo por si me estoy perdiendo algo:

Código PHP:
Ver original
  1. $sql="SELECT COUNT(*) FROM empreado WHERE ";
  2. for($i=0;$i<count($trabajadores);$i++){
  3.     if($i+1==count($trabajadores)){
  4.         $sql.="(trabajadores LIKE '%?%' OR extrabajadores LIKE '%?%')";
  5.     }else{
  6.        $sql.="(trabajadores LIKE '%?%' OR extrabajadores LIKE '%?%') OR";
  7.     }
  8. }
  9. $sql.=
  10. "AND
  11.   edad > 64";
  12. $pdo=$db->prepare($sql);
  13. $p=1;
  14. for($i=0;$i<count($trabajadores);$i++){
  15.     $trabajador=$trabajadores[$i];
  16.     $pdo->bindParam($p,$trabajador);
  17.     $p++;
  18.     $pdo->bindParam($p,$trabajador);
  19.     $p++;
  20. }
  21. $execute=$pdo->execute();
  22. if($execute){
  23.     $count=$pdo->fetchColumn();
  24.     echo$count;
  25. }
$trabajadores es un array con los nombres de los trabajadores que es el valor que guardo en ese campo osea los nombres.

La consulta no me da ningun error pero la variable $count me da 0.

Saludos.
  #2 (permalink)  
Antiguo 21/11/2013, 08:19
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 3 meses
Puntos: 194
Respuesta: consulta sql desde php siempre me da 0

Si copias y pegas el string sql resultante en un cliente mysql, que pasa?

Si entra a este else:

Código PHP:
Ver original
  1. }else{
  2.        $sql.="(trabajadores LIKE '%?%' OR trabajadores LIKE '%?%') OR";
  3.     }

y después
Código PHP:
Ver original
  1. $sql.=
  2. "AND
  3.  edad > 64";

¿No se están juntando el OR y el AND?

Código PHP:
Ver original
  1. $pdo->bindParam($p,$trabajador;
Acá te falta un paréntesis derecho.

Código PHP:
Ver original
  1. echo$count;
Falta un espacio.

Código PHP:
Ver original
  1. for($i=0;$i<count($trabajadores);$i++){
Los count intenta hacerlos fuera de los ciclos guardando el resultado en una variable, asi el conteo no se ejecuta en cada vuelta.
Código PHP:
Ver original
  1. $foo = count($trabajadores);
  2. for($i=0;$i<$foo;$i++){

Amigo, no es por nada pero veo que el código esta repleto de errores de todo tipo, desde muy graves como los errores de sintaxis, hasta de rendimiento y de lógica. Yo diría que lo mastiques un poco mas.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Última edición por h2swider; 21/11/2013 a las 08:26
  #3 (permalink)  
Antiguo 21/11/2013, 08:36
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Haber vamos por partes, el codigo no contiene errores aunque lo copie a mano se me puede escapar algo, excepto lo del count que te doy toda la razon, bueno la consulta sql ya la mostre en pantalla y resulta que esta bien construida, muestra algo como esto:

Código MySQL:
Ver original
  1.     FROM
  2.            empreado
  3.     WHERE
  4.            (trabajadores LIKE '%?%' OR extrabajadores LIKE '%?%')
  5.      OR
  6.            (trabajadores LIKE '%?%' OR extrabajadores LIKE '%?%')
  7.      OR
  8.           (trabajadores LIKE '%?%' OR extrabajadores LIKE '%?%')
  9.       AND
  10.           edad > 64

Entonces no entiendo a que te refieres con lo del OR Y AND POR SEPARADO.

probe en un cliente sql pero con algunos campos y añadiendole valores a mano y funciono bien me da 3 registros.

Lo que no funciona es el contar en php me da 0 pero no me da ningun error de php ni nada.
saludos.

Última edición por pithon; 21/11/2013 a las 08:46
  #4 (permalink)  
Antiguo 21/11/2013, 09:14
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Bueno hice otra prueba, osea llene la consulta con los datos del array directamente y imprime la variable en pantalla despues copie en phpmyadmin y resulta que funciono perfectamente mostrandome como resultado 3, bueno sigo investigando si a alguien se le ocurre algo que me lo digo ya que estoy saturado con el tema este.
saludos.
  #5 (permalink)  
Antiguo 21/11/2013, 11:58
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Estoy intentando solucionar mi problema pero nada solo se que el error esta en este bucle

Código PHP:
Ver original
  1. $p=1;
  2. for($i=0;$i<count($trabajadores);$i++){
  3.     $trabajador=$trabajadores[$i];
  4.     $pdo->bindParam($p,$trabajador);
  5.     $p++;
  6.     $pdo->bindParam($p,$trabajador);
  7.     $p++;
  8. }
Imprimi el resultado en pantalla y la sintexis es correcta me muestra algo como esto:
$pdo->bindParam(1,'juan');
$pdo->bindParam(2,'juan');
$pdo->bindParam(3,'pedro');
$pdo->bindParam(4,'pedro');
$pdo->bindParam(5,'ana');
$pdo->bindParam(6,'ana');
..............

Saludos.

Última edición por pithon; 21/11/2013 a las 12:33
  #6 (permalink)  
Antiguo 21/11/2013, 13:00
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: consulta sql desde php siempre me da 0

¿Y si pruebas esto manualmente, qué te da al correrlo por ejemplo en phpMyadmin?:
Código MySQL:
Ver original
  1.     FROM
  2.            empreado
  3.     WHERE
  4.            (trabajadores LIKE '%juan%' OR extrabajadores LIKE '%juan%')
  5.      OR
  6.            (trabajadores LIKE '%pedro%' OR extrabajadores LIKE '%pedro%')
  7.      OR
  8.           (trabajadores LIKE '%ana%' OR extrabajadores LIKE '%ana%')
  9.       AND
  10.           edad > 64
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 21/11/2013, 13:16
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Hola gnzsoloyo gracias por tu interes en ayudarme ya que estoy saturaillo con el tema.

la consulta la ejecute directamente en phpmysql y funciono y en php hice esto asin:

Código PHP:
Ver original
  1. $sql="SELECT COUNT(*) FROM empreado WHERE ";
  2.     for($i=0;$i<count($trabajadores);$i++){
  3.         if($i+1==count($trabajadores)){
  4.             $sql.="(trabajadores LIKE '%".$trabajadores[$i]."%' OR extrabajadores LIKE '%".$trabajadores[$i]."%')";
  5.         }else{
  6.            $sql.="(trabajadores LIKE '%".$trabajadores[$i]."%' OR extrabajadores LIKE '%".$trabajadores[$i]."%') OR";
  7.         }
  8.     }
  9.     $sql.=
  10.     "AND
  11.      edad > 64";
  12.     $pdo=$db->prepare($sql);
  13.     $execute=$pdo->execute();
  14.     if($execute){
  15.         $count=$pdo->fetchColumn();
  16.         echo$count;
  17.     }


sin usar bindParam osea pasandole la consulta con las variables me funciona me muestra la cantidad de registros en este caso 3, por eso comento que el error esta en el bucle del bindParam.

Saludos.
  #8 (permalink)  
Antiguo 21/11/2013, 14:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Bueno haciendo pruebas llegé a la conclusion que bindParam no funciona con consultas like, alguien sabe a que es debido esto?
Alguien tiene alguna alternativa para hacer una consulta como la que postee?
Saludos.
  #9 (permalink)  
Antiguo 21/11/2013, 14:50
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: consulta sql desde php siempre me da 0

Código PHP:
Ver original
  1. if($execute){
  2. $count=$pdo->rowCount();
  3. echo $count;
  4. }
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #10 (permalink)  
Antiguo 21/11/2013, 15:09
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

hola gracias por el intento de ayudarme, el rowCount ya lo probe y siempre me devuelve 1 no se si es que es true o false pero como postee arriba si no uso bindParam el fetchColunn me devuelve las filas correctas este caso 3.
Yo entiendo que para un COUNT se utiliza fetchColumn.
saludos.

Última edición por pithon; 21/11/2013 a las 15:14
  #11 (permalink)  
Antiguo 21/11/2013, 15:24
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: consulta sql desde php siempre me da 0

Si es PDO, la solución creo que podría ser bindValue, no bindParam.
¿Lo has probado?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 21/11/2013, 15:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

si gnzsoloyo ya lo probre.Gracias de todas formas.
saludos.
  #13 (permalink)  
Antiguo 21/11/2013, 15:53
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: consulta sql desde php siempre me da 0

Intenta con.esto
Código PHP:
Ver original
  1. $pdo->execute();
  2. while($row=$pdo->fetchAll()){
  3. echo $row[0];
  4. }
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #14 (permalink)  
Antiguo 21/11/2013, 16:07
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Hola, al fin lo solucione, era el fallo mas tonto que te puedes imaginar, era pasarle los comodines con la variable asin:

Código PHP:
Ver original
  1. $sql="SELECT COUNT(*) FROM empreado WHERE ";
  2.     for($i=0;$i<count($trabajadores);$i++){
  3.         if($i+1==count($trabajadores)){
  4.             $sql.="(trabajadores LIKE ? OR extrabajadores LIKE ?)";
  5.         }else{
  6.            $sql.="(trabajadores LIKE ? OR extrabajadores LIKE ?) OR";
  7.         }
  8.     }
  9.     $sql.=
  10.     "AND
  11.      edad > 64";
  12.     $pdo=$db->prepare($sql);
  13.     $p=1;
  14.     for($i=0;$i<count($trabajadores);$i++){
  15.         $trabajador='%'.$trabajadores[$i].'%';
  16.         $pdo->bindParam($p,$trabajador);
  17.         $p++;
  18.         $pdo->bindParam($p,$trabajador);
  19.         $p++;
  20.     }
  21.     $execute=$pdo->execute();
  22.     if($execute){
  23.         $count=$pdo->fetchColumn();
  24.         echo$count;
  25.     }
Bueno solo agradecer a todos los que intentaron ayudarme, saludos.
  #15 (permalink)  
Antiguo 22/11/2013, 07:49
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Perdonar que regrese a este post pero no me acaba de funcionar bien la consulta con LIKE, resulta que si por ejemplo esta buscando la palabra ana me debe de mostrar todo los campos que contengan ana hasta aqui bien pero en cambio no me muestra el campo si ana esta escrito asin.

_ana_

en cambio probe la consulta como postee anteriormente osea en phpmyadmin o asignando las variables directamente si el bindParam y ahi si me lo muestra bien, parece que el error esta en que los comodines no los esta usando pdo, probe de cambiar esta linea en el for del bindParam.

esta:
Código PHP:
Ver original
  1. $trabajador='%'.$trabajadores[$i].'%';
por esta:
Código PHP:
Ver original
  1. $trabajador='"%'.$trabajadores[$i].'%"';
o esta:
Código PHP:
Ver original
  1. $trabajador='\'%'.$trabajadores[$i].'%\'';

pero nada no me da ningun error pero no me encuentra ese registro _ana_.
Alguna idea probe de pasarle solo la variable ose la consulta dejarla con esto:

'%?%' preo tampoco, parece que pdo no se le pueda pasar este tipo de consultas o que?
espero que alguien me pueda dar alguna ayudita, saludos.
  #16 (permalink)  
Antiguo 22/11/2013, 07:58
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: consulta sql desde php siempre me da 0

Código PHP:
Ver original
  1. $trabajador="'%".$trabajadores[$i]."%'";
asi estaria mejor, ya que rn la consulta estas usando comillas dobles
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #17 (permalink)  
Antiguo 22/11/2013, 08:07
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Hola xSKArsx, tienes razon quizas estaria mejor asin aunque ya lo probe, pero sabiendo que no iva a funcionar, pdo primero recibe la consulta y luego las variables idependientemente de las comillas que use siempre que esten bien claro, bueno cualquier ayuda bienvenida sea, jejeje.

por cierto tambien probe asin:
Código PHP:
Ver original
  1. $trabajador_=$trabajadores[$i];
  2. $trabajador="%$trabajador_%";
Saludos.
  #18 (permalink)  
Antiguo 22/11/2013, 11:04
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: consulta sql desde php siempre me da 0

Amigo, cual es el resultado que esperas? Te.digo que con count(*) siempte vas a recibir una fila, no 3 como pirnsas
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #19 (permalink)  
Antiguo 22/11/2013, 17:20
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: consulta sql desde php siempre me da 0

Hola xSkArx, evidentemente COUNT(id) devuelve el contador de filas afectadas, yo no espero tres filas si no un contador a 3 que son los registros que me da como dije arriba si ejecuto el sql en phpmysql o incluso si le paso las variables directamente a la consulta sin usar el bindParam y lo ejecuto en php.

No entiendo muy bien porque pasa esto el problema esta en que no tiene en cuenta los comodines.

Intentare solucionar mi problema o mejor dicho saber porque sucede esto, porque la solucion realmente ya la tengo seria pasarle las variables junto a la consulta al pdo, total como estas variables no pueden ser manipuladas ya que las inserto yo en la base de datos y de hay las saco para la consulta, en fin quiero conseguir hacerlo como se deberia osea pasandole las variables al pdo despues de prepara la sql.

Cualquier ayuda o posible solucion se agradece.
Saludos.
  #20 (permalink)  
Antiguo 22/11/2013, 19:51
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: consulta sql desde php siempre me da 0

Código PHP:
Ver original
  1. if($execute){
  2.         $count=$pdo->fetch(PDO::FETCH_NUM);
  3.         echo $count[0];
  4.       //var_dump($count);  
  5.     }
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Etiquetas: registro, select, siempre, 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 08:35.