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
の値を読み取ります 返された結果セット。