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

Wywołanie Ajax z zapytaniem PHP / MySQLi zwracającym błędne wyniki

Nie ma powodu, aby używać num_rows , co jest nie tylko mylące i łatwe w użyciu, ale także może powodować problemy z wydajnością w przypadku niewłaściwego użycia.

Po prostu pobierz COUNT(1) a następnie pobierz pojedynczą kolumnę z pierwszego wiersza w wyniku SQL.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($host, $username, $password, $database);
$conn->set_charset('utf8mb4');

$stmt = $conn->prepare("SELECT COUNT(1) FROM users WHERE username = ?");
$stmt->bind_param("s", $_POST['username']);
$stmt->execute();
$exists = $stmt->get_result()->fetch_row()[0];

if($exists) {
    echo "valid";
} else {
    echo "invalid";
}

Jeśli z jakiegoś dziwnego powodu chciałeś pozostać przy num_rows musiałbyś albo wywołać store_result() na wyciągu, a następnie pobierz num_rows z instrukcji lub wywołaj get_result() i odczytaj wartość num_rows na zwróconym zestawie wyników.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd w składni SQL; sprawdź instrukcję, która odpowiada Twojej wersji serwera MySQL

  2. VS 2019 i MySQL Entity Framework zduplikowana nazwa bazy danych

  3. BigQuery/SQL — Podziel wartość na określone warianty

  4. Jak używać mvc-mini-profiler z Entity Framework 4,1?

  5. Jak określić kolumnę tożsamości z automatycznym przyrostem (int) przy użyciu Fluent-NHibernate i MySQL