2016-08-01 4 views
-4

私はこの質問を既に聞いていますが、別の質問があります。このthreadを参照して、私が何について話しているかを見てください。 PDOや改良されたMySQLiを使うべきだと言ってはいけません。私はそれについて学び始めるとすぐに変更するつもりです。PHP - ユーザー名または電子メールがすでに取得されているかどうか確認してください。

すでに存在する場合、他のフィールドを「チェック」したい場合はどうすればよいですか?私のコードは正常に動作していますが、それはのユーザ名のためだけであり、電子メールアドレスがすでに取得されているかどうか、または他のフィールドもチェックしたいと思っています。

マイコード:

​​

これは重複質問ないが、ここでの質問は複数のクエリ単一のクエリないでそれを確認する方法である、と私も聞いていますのよここでどのように私は別のエラーメッセージを使用しますか。

+0

が、私はそれをするつもりの変化だので、私はそれについての学習を始めるとすぐPDO 『または改善MySQLiのが「私が使用する必要があることを言わないでください』 " - すでにmysqli +のプリペアドステートメントを使用していますので、全体的には大丈夫です – Philipp

+0

コメントをいただきありがとうございます。しかし、私は"チュートリアル "のようなものを探しています。単一のクエリは、ユーザー名やパスワードを確認する? (しかし、必要ならば複数の問い合わせを行うことができます) – virtualAnon

+1

1つのクエリだけを使うこともできます。確認したいフィールドごとに 'where'節で' OR'を使ってください。 'username =?またはメール?またはx = y' – Philipp

答えて

2

変更するには、この(あなたがしたい場合は、より多くを追加することができます)へのクエリ: -

$sql='select username from users where username=? OR email=?'; 
        $stmt=$mysqli->prepare($sql); 
        $stmt->bind_param('ss',$username,$email); 
        $stmt->execute(); 

それは1つのユーザ名または電子メールのいずれかが存在する場合、それはtrueを返します、確認する必要があります。

UPDATE(ご要望に応じて): -

$sql='select email from users where email=?'; 
$stmt=$mysqli->prepare($sql); 
$stmt->bind_param('s',$email); 
$stmt->execute(); 
$stmt->bind_result($found); 
$stmt->fetch(); 

if($found){ 
    // Email registered before! 
$error = true; // To prevent double checking 

// You can use the $error or this array error. 
// $error[] = "Email Found, please register using another email"; 
} 

if (!$error || count($error) == 0) { 
$sql='select username from users where username=?'; 
$stmt=$mysqli->prepare($sql); 
$stmt->bind_param('s',$username); 
$stmt->execute(); 
$stmt->bind_result($found); 
$stmt->fetch(); 

if($found){ 
    // Username registered before! 
} 

} 
+0

したがって、コードは基本的に "これは電子メールを選択しないと機能しますか? – virtualAnon

+0

いいえ、しかしORを入れて問題を解決します – MuthaFury

+0

コードをありがとう、それはまったく問題ありませんが、最後の質問が1つあります。 – virtualAnon

関連する問題