Mysql
 sql >> база данни >  >> RDS >> Mysql

Ajax извикване с PHP / MySQLi заявка, връщаща грешни резултати

Няма причина да използвате num_rows , което не само е объркващо, лесно за злоупотреба, но също така може да причини проблеми с производителността, ако се използва неправилно.

Просто извлечете COUNT(1) и след това извлечете една колона от първия ред във вашия 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";
}

Ако искате по някаква странна причина да се придържате към num_rows ще трябва или да извикате store_result() върху израза и след това вземете num_rows от израза или извикайте get_result() и прочетете стойността на num_rows върху върнатия набор от резултати.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL целочислени неподписани аритметични проблеми?

  2. Защо тази заявка не работи както очаквах?

  3. Python:Какво не е наред с моя код за вмъкване на множество процеси в MySQL?

  4. Как да намерите липсващи редове с данни с помощта на SQL?

  5. Намалете дневната таблица за състоянието, за да съдържа само промени в състоянието