Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQLi Query zwraca wartość w przypadku Select bez pasujących wierszy

Z dokumentacji MySQLi :

Tak więc w zasadzie, nawet jeśli zapytanie nie zwróci żadnych wierszy, nadal jest to udane zapytanie. Powinieneś raczej sprawdzić liczbę zwróconych wierszy. Zmień swój if warunek do:

If ($result->num_rows) {

Uwaga boczna:

  1. Teraz nadszedł właściwy czas, aby podjąć właściwe pierwsze kroki w pracy z PHP-MySQL. Zamiast korzystać z funkcji zapytania, powinieneś raczej użyć Przygotowane wyciągi .
  2. Zawsze używaj obsługi wyjątków (try-catch ), aby wyłapać inne błędy podczas wykonywania zapytania.

Oto równoważny kod używający przygotowanych instrukcji i obsługi wyjątków:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieznana kolumna zagregowana w klauzuli posiadającej

  2. Błąd instrukcji separatora MySQL

  3. tworzenie strony logowania za pomocą PHP

  4. Ranking wspólnych pozycji w MySQL

  5. Jak wybrać zoptymalizowane typy danych dla kolumn [specyficzne dla innodb]?