2012-02-24 21 views
-1

我想通過pdo做一個mysql插入。插入工作正常,但我需要一些其他規則,因爲pdo對我來說不熟悉,所以無法將我的頭圍繞在它的周圍。數據庫插入與「if else」規則通過pdo

這裏插入代碼:

$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

語法加亮已經具備了你什麼是你的代碼錯誤... – ThiefMaster 2012-02-24 11:36:21

回答

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雖然正確。戴上ipUNIQUE約束,你可以做

// 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 2012-02-24 14:22:06