sql >> Databáze >  >> RDS >> Mysql

Návratová hodnota MySQLi Query v případě Select bez odpovídajících řádků

Z dokumentace MySQLi :

Takže v podstatě, i když dotaz nevrací žádné řádky, je to stále úspěšný dotaz. Raději byste měli zkontrolovat počet vrácených řádků. Změňte if podmínkou na:

If ($result->num_rows) {

Sidenote:

  1. Nyní je ten správný čas podniknout správné počáteční kroky při práci s PHP-MySQL. Místo použití funkce dotazu byste měli raději použít Připravená prohlášení .
  2. Vždy používejte zpracování výjimek (try-catch ), abyste zachytili další chyby během provádění dotazu.

Zde je ekvivalentní kód využívající připravené příkazy a zpracování výjimek:

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
}


  1. Lower_case_table_names Nastavení v MySQL 8.0.12

  2. Upozornění:PDO::__construct():[2002] Žádný takový soubor nebo adresář (pokouším se připojit přes unix:///tmp/mysql.sock) v

  3. Použití SQL k nalezení celkového počtu zákazníků s více než X objednávkami

  4. Levé připojení pomocí kritérií hibernace