Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No me retorna siempre el valor de una consulta

Estas en el tema de No me retorna siempre el valor de una consulta en el foro de PHP en Foros del Web. Cordial saludo. Estoy trabajando con php 5.3.1 y mysql 5; ademas trabajo con la libreria mysqli; mi problema es que al hacer la consulta de ...
  #1 (permalink)  
Antiguo 30/11/2013, 10:09
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 8 meses
Puntos: 2
Pregunta No me retorna siempre el valor de una consulta

Cordial saludo.

Estoy trabajando con php 5.3.1 y mysql 5; ademas trabajo con la libreria mysqli; mi problema es que al hacer la consulta de la base de datos desde el formulario no siempre me retorna datos asi la consulta este bien; porque la ejecuto desde la consola de mysql y si trae datos. La conexion la hace bien.

Aqui el codigo que utilizo:
Código PHP:
$Datos BusqEstu($_POST['cbTipoIden'], $_POST['txtNumeIden']);
count($Datos);
if(
count($Datos) > 1)
{
    
$estConsecutivo $Datos['estConsecutivo'];
    
$PrimNomb $Datos['estPrimNomb'];
    
$SeguNomb $Datos['estSeguNomb'];
    if(
trim($SeguNomb))
        {
$SeguNomb " ".$SeguNomb;}
    
$NombEstu $PrimNomb.$SeguNomb;
    
$PrimApel $Datos['estPrimApel'];
    
$SeguApel $Datos['estSeguApel'];
    if(
trim($SeguApel))
        {
$SeguApel " ".$SeguApel;}
    
$ApelEstu $PrimApel.$SeguApel;
    
$NombApel $NombEstu." ".$ApelEstu;
}

//Y aqui la funcion
function BusqEstu($TipoIden$NumeIden$sedConsecutivo){
    try{
        
$conexion crearConexion();
        
$sql "SELECT estConsecutivo, estPrimNomb, estSeguNomb, estPrimApel, estSeguApel 
                FROM estudiantes 
                WHERE tdConsecutivo = ? and 
                estNumeIden = ? and 
                estEstado = 'A'"
;
        
$sentencia $conexion->prepare($sql);
        
$sentencia->bind_param("ii"$TipoIden$NumeIden);
        
$sentencia->execute();

        
$sentencia->bind_result($estConsecutivo$estPrimNomb$estSeguNomb$estPrimApel$estSeguApel);

        if(
$sentencia->fetch()){
            
$fila = array('estConsecutivo'=>$estConsecutivo'estPrimNomb'=>$estPrimNomb'estSeguNomb'=>$estSeguNomb'estPrimApel'=>$estPrimApel'estSeguApel'=>$estSeguApel);
            
$conexion->close();
            
$sentencia->close();
            return 
$fila;
        }else{
            
$conexion->close();
            
$sentencia->close();
            return 
0;
        }
    }catch(
Exception $e){
        echo 
$e;
        
$conexion->close();
        
$sentencia->close();
        return 
false;
    }

Agradezco de antemano la ayuda y sugerencias que me puedan brindar.
  #2 (permalink)  
Antiguo 30/11/2013, 10:27
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: No me retorna siempre el valor de una consulta

Cita:
mi problema es que al hacer la consulta de la base de datos desde el formulario no siempre me retorna datos asi la consulta este bien; porque la ejecuto desde la consola de mysql y si trae datos. La conexion la hace bien.
Pues el primer razonamiento lógico es que las variables no llegan todas las veces con datos, o los datos no en ellas no están bien.
Lo primero que deberías hacer es revisar qué datos tienen las variables en cada caso, es decir cuando si devuelve registros, y también cuando no los devuelve.
Para darte un ejemplo, si ambos valores son números enteros, pero en lugar de contener un nulo, contienen un cero, la consulta no devolverá datos, pero tampoco disparará un error de sintaxis ni una excepción, pues desde el punto de vista lógico en SQL, esto es correcto:
Código MySQL:
Ver original
  1. SELECT estConsecutivo, estPrimNomb, estSeguNomb, estPrimApel, estSeguApel
  2. FROM estudiantes
  3. WHERE tdConsecutivo = 0 and
  4.                 estNumeIden = 0 and
  5.                 estEstado = 'A'
¿Se entiende?
Es decir, si el valor de la variable es cero (0) y entra cero, eso es un valor legal, pero si no existen esos valores en la base para esos campos... pues no devolvera datos.

Verifica las variables a traves de varias pruebas, capturando los valores que se ingresan, comparándolos con los que tienen en la consulta.

Si eso anda bien, habrá que hilar más fino.
__________________
¿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/11/2013, 10:34
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 14 años, 2 meses
Puntos: 56
Respuesta: No me retorna siempre el valor de una consulta

chequea lo que te dijo gnzsoloyo, y en caso de que los valores no te sean indispensables, en la configuracion de la tabla le puedes poner por default null, para que si no se envia que le asigne el valor por defecto
  #4 (permalink)  
Antiguo 30/11/2013, 10:36
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 8 meses
Puntos: 2
Pregunta Respuesta: No me retorna siempre el valor de una consulta

Gracias por responder tan rapido ya he realizado varias pruebas verificando que la informacion de las variables lleven datos y todo esta bien excepto que no siempre me retorna datos en la consulta asi este en la tabla que le haga la consulta.

Que otra cosa podria ser??

Agradezco de antemano la ayuda y sugerencias que me puedan brindar
  #5 (permalink)  
Antiguo 30/11/2013, 11:06
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: No me retorna siempre el valor de una consulta

Cuando defines la.funcion lo haces con 3 parametro y cuando la utilizas solo le pasas dos, me imagino que en tu fichero defines la funcion y despues la llamas, si lo tienes como lo muestras nunca va a funciknar
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #6 (permalink)  
Antiguo 30/11/2013, 11:07
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 14 años, 2 meses
Puntos: 56
Respuesta: No me retorna siempre el valor de una consulta

ten en cuenta que se tienen que cumplir las tres condiciones que tienes puestas, con que en la linea una no este, te la saltara.
De todas formas yo no tengo mas que conocimientos basicos de mysql, en mi trabajo las consultas a bases de datos las hace otra seccion del personal, dedicado a la gestion y mantenimiento, ellos se encargan de la optimizacion de consultas y esas cosas, yo solo les digo que datos necesito y ellos hacen el resto.
Aqui la gente ayuda por que le apetece, no por obligacion, asi que tomatelo con paciencia eso de esperar una respuesta y intenta mientras hacerlo por ti mismo.
  #7 (permalink)  
Antiguo 30/11/2013, 11:38
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: No me retorna siempre el valor de una consulta

Cita:
Iniciado por tattojk Ver Mensaje
Gracias por responder tan rapido ya he realizado varias pruebas verificando que la informacion de las variables lleven datos y todo esta bien excepto que no siempre me retorna datos en la consulta asi este en la tabla que le haga la consulta.

Que otra cosa podria ser??

Agradezco de antemano la ayuda y sugerencias que me puedan brindar
Explicanos qué verificaciones hiciste, muestranos un ejemplo real de los datos que obtuviste en cada paso, y cómo es que te aseguraste que la consulta finalmente quede bien construida.
Entiende que si no te da un fallo por excepción, y no hay errores de sintaxis, entonces la única posibilidad es que los datos estén mal, sin ser datos ilegales. En un caso como el que te ejemplifiqué.
No creas que es la primera vez que a alguien le pasa algo así, y siempre termina siendo que los datos de las condiciones en la consulta no son los que creían que estaban.

Y como dice @Dalam: ¿verificaste con todos los datos manualmente? Porque si uno solo falla... no devolverá nada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 30/11/2013, 18:50
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 8 meses
Puntos: 2
De acuerdo Respuesta: No me retorna siempre el valor de una consulta

Ya esta solucionado era un pequeño detalle con el
Código PHP:
bind_param("ii"$TipoIden$NumeIden); 
me toco darle en el segundo parametro double es decir
Código PHP:
bind_param("id"$TipoIden$NumeIden); 
y con eso quedo solucionado.

Es increible el tiempo que uno le quema a algo tan pequeño jejejeje

Gracias a todos por su ayuda.

xSkArx tienes toda la razon; puse 3 parametros en la funcion cuando eran dos, fue error mio de copiar y pegar en este foro; gracias por corregir ese detalle.

Dalam en ningún momento de los mensajes he escrito que deben dar una respuesta, si lees bien escribi "Agradezco de antemano la ayuda y sugerencias que me puedan brindar" asi que por favor no saques palabras que no he escrito yo.

Última edición por tattojk; 30/11/2013 a las 19:01

Etiquetas: formulario, mysql, retorna, select, siempre, sql, valor
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 10:20.