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

複数の電子メールまたはユーザー名を停止するにはどうすればよいですか?

    次のことを試してみてください:

    connect_db();
    $check = mysql_query("SELECT 'User' validation
                            FROM school_users 
                           WHERE username = '$username' 
                           UNION ALL
                          SELECT 'Email' 
                            FROM school_users 
                           WHERE email = '$email'") or die(mysql_error());
    $row = mysql_fetch_assoc($check);
    
    if($row)
    {
        if ($row["validation"] == 'User') {
                respond("error", "Sorry, the username ".$_POST['username']." is already in use. Please choose a different username.");}}
        else if ($row["validation"] == 'Email') {
            respond("error", "Sorry, the email ".$_POST['email']." is already in use. Please choose a different email.");}}
    }
    

    または、個別に行うこともできます...

    //Validate UserName
    connect_db();
    $check = mysql_query("SELECT username FROM school_users WHERE username = '$username'") or die(mysql_error());
    $check2 = mysql_num_rows($check);
    
    if ($check2 != 0) {
        respond("error", "Sorry, the username ".$_POST['username']." is already in use. Please choose a different username.");}
    
    //Validate Email
    connect_db();
    $checkEmail = mysql_query("SELECT email FROM school_users WHERE email = '$email'") or die(mysql_error());
    $checkEmail2 = mysql_num_rows($check);
    
    if ($checkEmail2 != 0) {
        respond("error", "Sorry, the email ".$_POST['email']." is already in use. Please choose a different email.");}
    

    さらに、コードはSQLインジェクション攻撃に対して脆弱であり、非推奨のMySQLphp関数を使用しています。コードの脆弱性を軽減したい場合は、次のリンクを参照してください。

    mysql_*関数を使用すべきでない理由PHPで?

    mysql_関数の代わりに何を使用できますか?

    プリペアドステートメント

    MySQLiを使用したプリペアドステートメント



    1. Oracle挿入の失敗:有効な月ではありません

    2. 500内部サーバーエラー?

    3. R12/R12.2のOracleForms

    4. mysqlは「フィールドリスト」に不明な列「mac」をスローします