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

ユーザー名がMySQLiにすでに存在するかどうかを確認します

    うまくいかないことがいくつかあります。mysql_real_escape_stringを使用しないでください mysqli_*を使用しているため 。 mysqli_real_escape_stringを使用します 代わりは。ただし、mysqli_stmt_bind_paramを使用することをお勧めします プリペアドステートメントを使用しているためです。また、COUNT(*)を使用する場合 常に1行になります。

    $pseudo = $_POST['pseudo'];
    $mail = $_POST['mail'];
    
    $query = "SELECT * FROM t_people WHERE PEO_PSEUDO = ? OR PEO_MAIL = ? LIMIT 1";
    $stmt = mysqli_prepare($sql, $query);
    mysqli_stmt_bind_param($stmt, 'ss', $pseudo, $mail);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    $numRows = mysqli_stmt_num_rows($stmt);
    mysqli_stmt_close($stmt);
    

    COUNT(*)を使用 (より効率的です)次のようになります:

    $query = "SELECT COUNT(*) as numrows FROM t_people WHERE PEO_PSEUDO = ? OR PEO_MAIL = ?";
    ...
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt, $numRows);
    mysqli_stmt_fetch($stmt);
    mysqli_stmt_close($stmt);
    
    // work with $numRows
    


    1. 動的ランキング行へのMySQLクエリ

    2. MySQLの複数の列でNULLをテストする

    3. クエリよりも短い時間のRails`where`

    4. ネストされたケースを簡略化するwhenステートメント