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

Ajax-Aufruf mit PHP / MySQLi-Abfrage, die falsche Ergebnisse liefert

Es gibt keinen Grund, num_rows zu verwenden , was nicht nur verwirrend und leicht zu missbrauchen ist, sondern bei Missbrauch auch zu Leistungsproblemen führen kann.

Rufen Sie einfach COUNT(1) ab und rufen Sie dann eine einzelne Spalte aus der ersten Zeile in Ihrem SQL-Ergebnis ab.

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";
}

Wenn Sie aus irgendeinem seltsamen Grund bei num_rows bleiben wollten Sie müssten entweder store_result() aufrufen auf der Anweisung und erhalten Sie dann die num_rows aus der Anweisung oder rufen Sie get_result() auf und lesen Sie den Wert von num_rows auf der zurückgegebenen Ergebnismenge.