電子書籍の厳選無料作品が豊富!

プログラム初心者です

$nameと$mailをDBに登録してあるか調べたいのですが

sqlを一回だけ発行で調べる方法はありますか?


//名前とメールを取得して重複チェック
$name2 = mysqli_query($link,sprintf('SELECT name FROM table WHERE name="%s"',
mysqli_real_escape_string($link,$name)
));
$data = mysqli_fetch_assoc($name2);

if(isset($data['name'])==$name){
throw new Exception('noname');
}



$name3 = mysqli_query($link,sprintf('SELECT mail FROM table WHERE mail="%s"',
mysqli_real_escape_string($link,$mail)
));
$data2 = mysqli_fetch_assoc($name3);
if(isset($data2['mail'])==$mail){
throw new Exception('nomail');
}


よろしくお願いします

A 回答 (1件)

提示されたコードにおかしい点が含まれているのでそれも直しつつ1つにまとめました。



$result = mysqli_query($link, sprintf(
'SELECT name, mail FROM table WHERE name="%s" OR mail="%s"',
mysqli_real_escape_string($link, $name),
mysqli_real_escape_string($link, $mail)
));
while ($row = mysqli_fetch_assoc($result)) {
if ($name === $row['name'] && $mail === $row['mail']) {
throw new Exception('その名前とメールアドレスは既に登録されています');
} elseif ($name === $row['name']) {
throw new Exception('その名前は既に登録されています');
} elseif ($mail === $row['mail']) {
throw new Exception('そのメールアドレスは既に登録されています');
}
}
    • good
    • 0
この回答へのお礼

わかりやすい回答ありがとうございます
動きました
おかげでコードがまとまってすっきりしました。ありがとうございます

お礼日時:2014/01/24 02:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!