2012-05-09 10 views
1

が存在するかどうかをチェックするためにSELECT文を準備:このコードは、私のデータベースにユーザーを作成できるように努めています :PDOは、ユーザーが、私はPDOの初心者だといくつかのPHP/PDOコードを準備して実行する必要が

// Perform Insert/Update 
$STH = $dbh->prepare("INSERT INTO users (username, email) values (:username, :email)"); 
$STH->bindParam(':username', $username); 
$STH->bindParam(':email', $email); 
    try{ 
    $STH->execute(); 
    redirect_to(signupsuccess.php); 
    } 
catch(PDOException $e) { 
echo "I'm sorry, Dave. I'm afraid I can't do that."; 
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND); 
} 
    } 

ですが、そのデータをデータベースに入れる前に、電子メールがデータベースに存在していないことを確認する必要があります。私は、SELECTを行うために何か必要があります。

$STH = $dbh->prepare("SELECT FROM users (email) values (:email)"); 
$STH->bindParam(':email', $email); 
try{ 
    $STH->execute(); 
     } 

を、私はPDOせずにこれを行うことができます私は完全にこのpoint..Iで迷ってしまいました私は

"WHERE something matches '$_POST'email') something.." ... 

を追加する必要があります知っているが、私はしたいですPDOの準備文を使用し始める。助けてください!

答えて

0

単純な選択をしてください。おそらくnullのメールがある場合は、バインド値を使用することをお勧めします。

$STH = $dbh->prepare("SELECT email FROM users WHERE email = :email"); 
$STH->bindValue(':email', $email); 
try{ 
    $STH->execute(); 
} 

次に、レコードが返されるかどうかを確認します。更新する場合は、挿入しないでください。がんばろう。

+0

お返事ありがとうございます。私は、バインド部分は、準備されたスロット(:電子メール)以外の場所から行くことから供給された電子メールを声明の中で防ぐことによってSQLインジェクションを防ぐのに役立つだろうと思いますか? –

+0

また、$ STHの代わりに$ STH2を使用する必要がありますか?私はすでに挿入/更新のために$ STHを使用していますが、私は接続を閉じることはありません(<?php $ dbh = null;?>)。後ほど。 –

+0

:LIMITを追加する際に何か有害/ 1? –

関連する問題