sql >> データベース >  >> RDS >> Mysql

PHP/MySQLiクエリを使用したAjax呼び出しが間違った結果を返す

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



    1. sqlfiddle(oracle)のselectクエリで列名を使用できません

    2. OracleからBLOBデータを取得する際の制限

    3. Hibernateセッションをトランザクション用に開くことができませんでした

    4. MySQL:VARCHAR(255)の代わりにVARCHAR(20)を使用するのはなぜですか?