2012-02-24 7 views
-1

私はpdoを使ってmysql挿入をしようとしています。インサートはうまく動作しますが、もしpdoが私には慣れていないので、私はそれ以外のルールがあり、その頭の中で私の頭を包み込むことができません。pdoを使って "if else"ルールでデータベースを挿入

ここで挿入コードです:

$qry = $dbh->prepare(
    'INSERT INTO statistics (page, who, ip) VALUES (?, ?, ?)'); 
$qry->execute(array($pdotitle, $name, $ip)); 

は、これは正しく言うことありませんが、私は、ユーザーのIPを持つ行がすでに存在する場合は、統計をチェックから行を選択し、ルールを作成する必要があります。このような

何か:

$ip = $_SERVER['remote_addr'] 
$qry = $dbh->prepare(
    'SELECT * FROM statistics WHERE page = :pdotitle); 
$qry->execute(array($pdotitle)'); 
if (ip == '$ip') { /**do nothing**/ } else { /**do insert**/ } 

私はこれをどのように行うのですか?

+6

シンタックスハイライトは、すでにあなたのコードが悪いの何を示しています...私はそれをいじっている必要があります:) あなたの答えのが尋ねる前に、より多くのABITため – ThiefMaster

答えて

2

おそらくこの考え:

$ip = $_SERVER['remote_addr'] 
$qry = $dbh->prepare(
    'SELECT * FROM statistics WHERE page = :pdotitle AND ip = :ip'); 
$qry->execute(array($pdotitle, $ip)); 
$row = $qry->fetch(); 
if (!is_null($row)) { /**do insert**/ } 

あなたは何をすべきとはいえ、正しくSQLを使用しています。 ip列にUNIQUE制約を入れて、あなたが行うことができます

// insert each ip only only and ignore the rest 
$qry = $dbh->prepare(
    'INSERT IGNORE INTO statistics (page, who, ip) VALUES (?, ?, ?)' 
); 

// but maybe you really want to keep the table updated 
$qry = $dbh->prepare(
    'REPLACE INTO statistics (page, who, ip) VALUES (?, ?, ?)' 
); 
+0

おかげで、しかし、今のように動作します:) – Havihavi

関連する問題