2014-01-05 67 views
2

在MySQL(帶PDO)中使用ON DUPLICATE KEY UPDATE時,如何檢查一個現存行是否已更新,或者在插入一個新行時如何檢查?我使用PHP的PDO用一備查詢插入:如何知道是否插入了新行,或者是否更新了現存行?

$sql = "INSERT INTO some_table (f_name, l_name) "; 
$sql.= "VALUES (:f_name, :l_name) "; 
$sql.= "ON DUPLICATE KEY UPDATE "; 
$sql.= " f_name = VALUES(f_name) "; 
$sql.= " l_name = VALUES(l_name) "; 

$stmt = $pdo->prepare($sql); 
$stmt->bindValue(':f_name', 'Jeff'); 
$stmt->bindValue(':l_name', 'Atwood'); 
$stmt->execute(); 

現在我想輸出Updated!Added!適當。我怎樣才能檢查這個?

回答

3

您可以通過檢查受影響的行數來檢查。

無論何時插入一行,它都會返回與插入行數完全相同的數字。但是,更新時,它會乘以2並返回爲受影響的行。

例如,

如果要添加兩排,並 行創建:受影響的行會2 行被更新:受影響的行會是4

參考:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

此外,要檢查受影響的行數,你可以使用rowCount函數(http://in3.php.net/manual/en/pdostatement.rowcount.php

+0

完美,謝謝! – dotancohen

相關問題