sql >> Database >  >> RDS >> Mysql

Ajax-oproep met PHP / MySQLi-query die verkeerde resultaten oplevert

Er is geen reden om num_rows te gebruiken , wat niet alleen verwarrend en gemakkelijk te misbruiken is, maar ook prestatieproblemen kan veroorzaken bij misbruik.

Haal gewoon COUNT(1) en haal vervolgens een enkele kolom uit de eerste rij in uw SQL-resultaat.

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

Als je om de een of andere vreemde reden bij num_rows wilt blijven je zou ofwel store_result() . moeten aanroepen op het statement en verkrijg dan de num_rows uit de instructie of bel get_result() en lees de waarde van num_rows op de geretourneerde resultatenset.



  1. Welke jar op weblogic-server/andere bronnen zou mogelijk klasse kunnen hebben:oracle.security.jps.ee.http.JpsFilter?

  2. SQL:NIET IN alternatief voor het selecteren van rijen op basis van waarden van *verschillende* rijen?

  3. Waarde uit één tabelkolom halen als er twee kolommen met dezelfde naam in een sql-join bestaan

  4. Wijzigen hoe isql SQL uitvoert