sql >> Database teknologi >  >> RDS >> Mysql

Ajax-opkald med PHP / MySQLi-forespørgsel, der returnerer forkerte resultater

Der er ingen grund til at bruge num_rows , som ikke kun er forvirrende, let at misbruge, men også kan forårsage ydeevneproblemer, hvis det misbruges.

Hent bare COUNT(1) og hent derefter en enkelt kolonne fra den første række i dit SQL-resultat.

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

Hvis du af en eller anden mærkelig grund ville holde dig til num_rows du skal enten kalde store_result() på sætningen og få derefter num_rows fra sætningen eller kald get_result() og læs værdien af ​​num_rows på det returnerede resultatsæt.



  1. SQL-indgange, der udløber efter 24 timer

  2. MySqlParameter som tabelnavn

  3. Skal jeg bruge HTML Purifier, hvis jeg fjerner tags/konverterer dem til HTML-enheder?

  4. MySQL-forespørgsel med alias, der ikke bruger et indeks