-1

そのため、SQL テーブルでユーザー名/電子メールが既に使用されているかどうかを確認するために PHP に if ステートメントがありますが、テストしているときに、ユーザー名/電子メールが既に使用されていると言い続けます。したがって、if文またはデータの取得が間違っていると仮定していますが、どちらが間違っていたのかわかりません。また、フィールドが空かどうかを確認しているときに、すべてのフィールドに入力するように求めずに、空であっても続行します。したがって、これらのコード行の何が問題なのか誰かが教えてくれれば幸いです。ありがとう。

$sql="SELECT username, email FROM table_name";
$result=mysqli_query($con,$sql);

if($result === FALSE){
}else{
 $row=mysqli_fetch_array($result);
}

if (empty($_POST['firstname']) || empty($_POST['lastname']) || empty($_POST['username']) || empty($_POST['email']) || empty($_POST['password']) || empty($_POST['password2'])) {
 if(!($_POST['username'] == $row['username']) && ($_POST['email'] == $row['email'])) {

 } else {
     echo '<script type="text/javascript">'
    , 'window.alert("That username or email is already in use.")'
    , '</script>';
 }
} else {
     echo '<script type="text/javascript">'
    , 'window.alert("Please fill in all the fields.")'
    , '</script>';
}
4

2 に答える 2

2

という名前のデータベースから配列をフェッチする場合、$rowその配列を調べて、ユーザー名 || かどうかを確認する必要があります。メールが見つかりました。(名前を変更したことに注意してください$row -> $rows

if($result === FALSE){
}else{
 $rows=mysqli_fetch_array($result);
}
if(isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['password2'])){
    foreach ($rows as $row) {
        if($row['username'] == $_POST['username'] || $row['email'] == $_POST['email']){
           echo '<script type="text/javascript">'
           , 'window.alert("That username or email is already in use.")'
           , '</script>';
           break;
        }
    }
}
else{
echo '<script type="text/javascript">'
    , 'window.alert("Please fill in all the fields.")'
    , '</script>';
}

タブレットを使用して、うまくいったことを願っています。

于 2013-07-01T15:48:54.903 に答える
0

このコードを試してください:

SELECT username, email FROM table_name WHERE username="user" AND email="email"

データベースと比較するには、クエリ列情報を渡す必要があります。そうしないと、データベースからすべての行が返されます。したがって、常に 以外の戻り値を取得しますFALSE

于 2013-07-01T15:31:23.923 に答える