[英]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.