PHP - Como consultar existencia de registro en basde datos

 
Vista:

Como consultar existencia de registro en basde datos

Publicado por Fede (10 intervenciones) el 10/11/2018 00:13:32
Hola, tengo un problema con una consulta en la base de datos. El código sería el siguiente:

Una vez ya establecida la conexión con la BD y almacenada en la variable $conexion:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(isset($_GET['bolsahdm'])) {
 
    $bolsahdm = $_GET['bolsahdm'];
 
    $consulta_bolsahdm = 'SELECT * FROM bolsas_est WHERE bref = ?';
    $sql_bolsahdm = $conexion->prepare($consulta_bolsahdm);
    $sql_bolsahdm->bind_param("s", $bolsahdm);
    $sql_bolsahdm->execute();
 
    if(!$sql_bolsahdm) {
 
        echo '<strong><font color="red">No se encontraron coincidencias en la búsqueda: '.$bolsahdm.'</font></strong>';
 
    } else {
 
        $res_bolsahdm = $sql_bolsahdm->get_result();
        $info_bolsahdm = $res_bolsahdm->fetch_array();
        echo 'Hola';
 
    }

El hecho es que me devuelve siempre TRUE, es decir, "Hola". Incluso si la consulta no existe en la base de datos (coincidencia del $_GET['bolsahdm'] con la columna bref de la tabla bolsas_est). La estructura de la BD es correcta y en eso no hay problema, es algo del código, pero no logro encontrar qué. Probé utilizando:

1
if(is_null($sql_bolsahdm))

y tampoco me dió resultado.
Si alguien puede hecharme una ayudita, le agradecería mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.446
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como consultar existencia de registro en basde datos

Publicado por xve (6933 intervenciones) el 10/11/2018 09:20:28
Hola Fede, execute() devuelve true o false si ha fallado, por lo que tienes que obtener ese valor...
1
2
3
4
5
6
7
$result=$sql_bolsahdm->execute();
if($result)
{
    todo OK
}else{
    algun error
}

Puedes probarlo y comentarnos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como consultar existencia de registro en basde datos

Publicado por Fede (10 intervenciones) el 10/11/2018 12:43:49
Muchísimas gracias por tu ayuda. Yo imaginé que al asignarle valores en forma de objeto ( -> ) automáticamente daba un return sobre la variable, pero lo probaré en cuanto llegue a casa y comento nuevamente para dejar el resultado por si le fue de utilidad a alguna otra persona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 602
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como consultar existencia de registro en basde datos

Publicado por Miguel (218 intervenciones) el 10/11/2018 09:27:45
Hola,

Esa validación siempre te devolverá true porque solo significa que la consulta/query se ejecutó exitosamente; y no indica si la consulta regresa (o no) filas.

Para contar las filas obtenidas (sin hacerlo desde la query) hay varias formas, desde recorrer las filas resultantes o usar la propiedad num_rows del resultado.


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.446
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como consultar existencia de registro en basde datos

Publicado por xve (6933 intervenciones) el 10/11/2018 10:40:09
Hola Miguel, devolvera false, si hay un error en la query.
https://secure.php.net/manual/es/pdostatement.execute.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como consultar existencia de registro en basde datos

Publicado por Fede (10 intervenciones) el 10/11/2018 12:48:32
Como comentó más arriba "xve" execute() devuelve un valor, solo que yo estoy obteniendo el del prepare() y no me di cuenta... Por cierto, anteriormente probé utilizar:

1
if(mysqli_num_rows($resultado) == 0)

Pero tampoco funcionó, devolvía error, algo así como que necesitaba 1 paramétro y estaba obteniendo como resultado un valor boolean, el cual supongo que sería el TRUE constante en prepare().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.446
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como consultar existencia de registro en basde datos

Publicado por xve (6933 intervenciones) el 10/11/2018 17:58:02
Fede, si estas utilizando PDO, no puedes utilizar mysqli_...
http://www.php.net/manual/en/pdostatement.rowcount.php

1
$result->rowCount();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como consultar existencia de registro en basde datos

Publicado por Fede (10 intervenciones) el 10/11/2018 22:45:40
Gracias por el dato, hace años que había dejado la programación, volví hace poco y me encontré con cosas nuevas como mysqli, la cual estoy tratando de aprender mediante PDO.
Con respecto al tema principal del post, probé utilizando esto:

1
$result_bolsahdm = $sql_bolsahdm->execute();

y luego haciendo la comprobación con el IF:

1
if($result_bolsahdm)

pero me sigue devolviendo TRUE siempre. Entonces probé con:

1
$result_bolsahdm = $sql_bolsahdm->rowCount()

pero me devolvía el error :"Call to undefined method mysqli_stmt::rowCount()". Así que probé con num_rows:

1
$result_bolsahdm = $sql_bolsahdm->num_rows()

y luego hacer la comprobación con IF:

1
if($result_bolsahdm == 0)

y ahora me devuelve siempre FALSE, es decir, no se encuentran coincidencias en ningún caso, incluso cuando el registro existe en la base datos. ¿Qué estoy haciendo mal?

Muchas gracias por el tiempo de leer e ir tratando de explicarme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar