Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Rückgabewert der MySQLi-Abfrage im Fall von Select ohne übereinstimmende Zeilen

Aus der MySQLi-Dokumentation :

Selbst wenn die Abfrage keine Zeilen zurückgibt, ist sie im Grunde immer noch eine erfolgreiche Abfrage. Sie sollten lieber nach der Anzahl der zurückgegebenen Zeilen suchen. Ändern Sie Ihr if Bedingung zu:

If ($result->num_rows) {

Nebenbemerkung:

  1. Jetzt ist der richtige Zeitpunkt, um die richtigen ersten Schritte im Umgang mit PHP-MySQL zu unternehmen. Anstelle der Abfragefunktion sollten Sie lieber Prepared Statements verwenden .
  2. Verwenden Sie immer die Ausnahmebehandlung (try-catch ), um andere Fehler während der Abfrageausführung abzufangen.

Hier ist der entsprechende Code mit vorbereiteten Anweisungen und Ausnahmebehandlung:

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
}