/ / php mysqli verifica si existe algún resultado [cerrado] - php, mysqli

php mysqli comprueba si existe algún resultado [cerrado] - php, mysqli

Tengo un código para verificar que los datos de usuario ya existen en mysql por mysqli de esta manera:

    $SQL = "SELECT users.email,users.handle,userprofile.mobile FROM users,userprofile
WHERE users.email =? OR users.handle =? OR userprofile.mobile=?";
if ($stmt = $mysqli->prepare($SQL)) {
$stmt->bind_param("sss", $email,$username,$mobile);
$stmt->execute();
if($stmt->num_rows){
$result = $stmt->get_result();
$row = $result->fetch_array(MYSQLI_NUM);
if($row[0] ==$email){echo "email exist";}
if($row[1] ==$username){echo "username exist";}
if($row[2] ==$mobile){echo "mobile exist";}
}
else{
echo "OK";
}

Si funciona cuando los datos de usuario ya existen. pero si los datos de usuario no existen, la else ¡No funciona! ¿por qué?

Respuestas

5 para la respuesta № 1

La razón por la que esto ocurre es porque su sentencia if se está volviendo verdadera, por lo tanto, ejecuta el código dentro de ella. $stmt->num_rows puede regresar true, false o una int, por lo que incluso si no hay filas afectadas, sigue devolviendo un valor válido

0 es un valor válido, la instrucción if solo omitirá esa parte del código si la lógica devuelve falso, por lo que cambiar su código a lo siguiente solucionará el problema.

if( $stmt->num_rows > 0) {
// your code here
}

1 para la respuesta № 2

Esto es porque estás comprobando num_rows como volveríafalse si no se encuentran coincidencias En cambio, vuelve 0 en caso de que no haya ninguna entrada coincidente, entonces me gustaría sugerir que se verifique si num_rows > 0

if($stmt->num_rows > 0){