1

He intentado solo con count($result) > 0 pero no funciona, con strlen y tampoco y este ejemplo tampoco me funciona, cómo puedo hacer para comprobar si la cuenta existe?

$result = mysqli_query($base,"SELECT * FROM $users WHERE email = '$email' AND password = '$password'");

if (count(mysql_fetch_array($result)) > 1) {
    echo "Login...";
}
Nuevo Usuario
  • 423
  • 4
  • 17

2 Answers2

1

Puedes hacer algo como esto:

$sql = "SELECT * FROM $users WHERE email = '$email' AND password = '$password'";
$result = mysqli_query($base, $sql);

if (mysqli_num_rows($result) > 0) {
  // Aqui iria lo que sucederia si se cumple la condicion
  while($row = mysqli_fetch_assoc($result)) {
    echo "Si hay un registro";
  }
} else {
  echo "0 resultados encontrados";
}

Espero te pueda servir ;)

DavidsDvm
  • 106
  • 3
1

El problema en tu código es que estás usando la antigua función mysql_fetch_array (sin la i), la cual estaría obsoleta.

Por otra parte, la forma más segura y a la vez eficaz de saber si hay registros es contando.

Además, para prevenir riesgo de Inyección SQL, considera usar consultas preparadas.

Así debería funcionar:

$total=0;
$sql="SELECT COUNT(*) FROM $users WHERE email = ? AND password = ?";
/* crear una sentencia preparada */
if ($stmt = mysqli_prepare($base, $sql)) {
    mysqli_stmt_bind_param($stmt, "ss", $email, $password);
    /* ejecutar la consulta */
    mysqli_stmt_execute($stmt);
    /* ligar variables de resultado */
    mysqli_stmt_bind_result($stmt, $total);
    /* obtener valor */
    mysqli_stmt_fetch($stmt);
}
/* $total será 0 (valor inicial) o el total de filas encontradas) */
var_dump($total);

Para más detalles sobre las consultas preparadas en mysqli consulta el Manual de PHP y para entender el enorme riesgo que estamos previniendo al implementar este código, lee sobre el tema Inyección SQL.

A. Cedano
  • 86,578
  • 19
  • 122
  • 221