2014-01-05 40 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

相关问题