Mysql
 sql >> Base de données >  >> RDS >> Mysql

Valeur de retour de la requête MySQLi en cas de sélection sans lignes correspondantes

Depuis la documentation MySQLi :

Donc, fondamentalement, même si la requête ne renvoie aucune ligne, il s'agit toujours d'une requête réussie. Vous devriez plutôt vérifier le nombre de lignes renvoyées. Changez votre if condition pour :

If ($result->num_rows) {

Note complémentaire :

  1. C'est maintenant le bon moment pour prendre les bonnes mesures initiales dans l'utilisation de PHP-MySQL. Au lieu d'utiliser la fonction de requête, vous devriez plutôt utiliser Déclarations préparées .
  2. Toujours utiliser la gestion des exceptions (try-catch ), pour intercepter d'autres erreurs lors de l'exécution de la requête.

Voici le code équivalent utilisant des instructions préparées et la gestion des exceptions :

try {

    // Prepare the query
    $stmt = "SELECT * FROM bank 
             WHERE name = ? 
               AND day = ? 
               AND time = ?";

    // Bind the parameters
    // assuming that your day and time are integer values
    $stmt->bind_param("sii", 'jack', '1', '2');

    // execute the query
    $stmt->execute();

    // Getting results:
    $result = $stmt->get_result();

    if ($result->num_rows === 0) {
        echo "0 results";
    } else {
        echo "success";

        // reading results
        while($row = $result->fetch_assoc()) {
            $name = $row['name'];
            $day = $row['day'];
            $time = $row['time'];
        }
    }

} catch (Exception $e) {

     // your code to handle in case of exceptions here
     // generally you log error details, 
     //and send out specific error message alerts
}