sql >> Databasteknik >  >> RDS >> Mysql

Ajax-samtal med PHP / MySQLi-fråga ger fel resultat

Det finns ingen anledning att använda num_rows , som inte bara är förvirrande, lätt att missbruka, utan också kan orsaka prestandaproblem om det missbrukas.

Hämta bara COUNT(1) och hämta sedan en enda kolumn från den första raden i ditt 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";
}

Om du av någon konstig anledning ville hålla dig till num_rows antingen måste du anropa store_result() på satsen och hämta sedan num_rows från uttalandet eller anrop get_result() och läs värdet på num_rows på den returnerade resultatuppsättningen.



  1. MySQL - Att kombinera INSERT, VALUES och SELECT?

  2. Hur man ökar en räknare och returnerar värdet i MySQL

  3. uppdatera med join statement mysql?

  4. Roll existerar inte och kan inte skapa databas när du använder PostgreSQL