0

だから私は見た目と思われることをやろうとしているので、おそらく非常に単純なありふれた仕事です。データベースでメールアドレスを確認しようとしています。私は私が正しい軌道に乗っているかどうかわかりません、誰かが私を裏切ることができますか?

$query = "SELECT * FROM 68_users WHERE email= $email";
if($result = mysqli_query($link, $query) == $email) {
     echo 'Email has been registered';
}else{
    $query = "INSERT INTO 68_users (email,pass,old_pass,first_name,last_name,dob,gender,phone,fanmail) 
             VALUES ('$email',AES_ENCRYPT('$pass', 'something'),AES_ENCRYPT('$pass', 'something'),'$first_name','$last_name','$dob','$gender','$phone','$fanmail')" 
             or die(mysqli_error());
    if ( !mysqli_query($link, $query) ) {
        echo 'error: '.mysqli_error($link);
        exit();
    }
}
mysqli_close($link);
}

よろしくお願いします。PHPのデバッグ状況を把握する必要があります。今、私は自分のサイトでEclipseとデバッグを書き込み、非常に悪化しています。これが私が使用したものです。

$query = "SELECT * FROM 68_users WHERE email= '$email'";
$result = mysqli_query($link, $query);
if($result->num_rows > 0) {
    echo 'This email has previously been registered';
}else{
    $query = "INSERT INTO 68_users (email,pass,old_pass,first_name,last_name,dob,gender,phone,fanmail)
    VALUES ('$email',AES_ENCRYPT('$pass', 'something'),AES_ENCRYPT('$pass', 'something'),'$first_name','$last_name','$dob','$gender','$phone','$fanmail')"
    or die(mysqli_error());
    if ( !mysqli_query($link, $query) ) {
        echo 'error: '.mysqli_error($link);
        exit();
    }
    header( 'Location: http://www.example.com/html/thankyou.html' ) ;
}
4

4 に答える 4

2

email変数の周りにアポストロフィが必要なため、このクエリは失敗します。また、クエリを実行して、返される行数を確認することもできます。

$query = "SELECT * FROM 68_users WHERE email= '$email'";
$result = mysqli_query($link, $query);
if($result->num_rows > 0) {
    echo 'Email has been registered';
}else{
 // ....
}
于 2013-01-03T15:37:19.183 に答える
1

あなたquotesは変数の周りに必要です$email

$query = "SELECT * FROM 68_users WHERE email= '$email'";

他のすべてが正常に機能するかどうかを知るために、残りのコードの結果を確認する必要があります。

于 2013-01-03T15:33:53.477 に答える
1

現在のコードの結果を知らなくても、私が見つけられる1つの問題は、クエリステートメントの電子メール値を一重引用符で囲んで正しく評価されるようにすることです。

$query = "SELECT * FROM 68_users WHERE email='$email'";

引用符を省略すると、クエリの実行時にエラーが発生します。これは、詳細な処理に応じて、目に見える場合とそうでない場合があります。さらなるポイントとして、これは基本的なデバッグが機能する場所であり、これはすべてのプログラマーにとって基本的なことです。

クエリステートメントがすでにそれを行っているので、電子メールの同等性チェックを削除します。返された行がない場合は、falseを返し、elseステートメントをトリガーします。

$query = "SELECT * FROM 68_users WHERE email='$email'";
if($result = mysqli_query($link, $query)) {
    // Registered
}else{
    // Not Registered
}
于 2013-01-03T15:34:06.873 に答える
0
$query = "SELECT * FROM 68_users WHERE email= '$email'";

また、値の配列を返します。「if($ result ... == $ email)」は失敗します。

* var_dump($ result)*を使用して、クエリから何が返されるかを確認します。

于 2013-01-03T15:36:37.910 に答える