繁体   English   中英

如何知道是否插入了新行,或者是否更新了现有行?

[英]How to know if new row was inserted, or if extant row was updated?

在MySQL中使用ON DUPLICATE KEY UPDATE (带有PDO)时, 如何检查是否更新了现有行或插入了新行 我正在将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! 作为适当的。 我该如何检查?

您可以通过检查受影响的行数来进行检查。

每当插入一行时,它都会返回与插入的行数完全相同的数字。 但是,更新时,它乘以2并作为受影响的行返回。

例如,

如果要添加两行,并且创建了行:受影响的行将为2行已更新:受影响的行将为4

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

另外,要检查受影响的行数,可以使用rowCount函数( http://in3.php.net/manual/zh/pdostatement.rowcount.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM