1
我有一个简单的MySQL查询:PHP检查是否MySQL查询是一个插入或更新
INSERT INTO table (col1,col2) VALUES ('1','2')
ON DUPLICATE KEY UPDATE col1 = '1', col2 = '2'
我使用PHP PDO语句来查询数据库。有没有办法知道执行的查询是否导致新插入的行或现有更新?
我有一个简单的MySQL查询:PHP检查是否MySQL查询是一个插入或更新
INSERT INTO table (col1,col2) VALUES ('1','2')
ON DUPLICATE KEY UPDATE col1 = '1', col2 = '2'
我使用PHP PDO语句来查询数据库。有没有办法知道执行的查询是否导致新插入的行或现有更新?
这样做的一种方法是在执行查询之前获取行数,然后在执行查询后获取行数,如果不相等,则表示插入了新行并且如果它们是相等,这意味着一行已更新。的
$sql = "SHOW TABLE STATUS LIKE 'TABLE_NAME'";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$row = $stmt->fetch();
$number_of_rows_before = $row['Rows'];
// Do your query here, afterwards
$stmt = $pdo->prepare($sql);
$stmt->execute();
$row = $stmt->fetch();
$number_of_rows_after = $row['Rows'];
// If condition
if($number_of_rows_before == $number_of_rows_after) // Update was executed
else // a new row was inserted.
非常低效 – 2014-10-16 23:51:19
可能的复制http://stackoverflow.com/a/10709458/4099592 – slapyo 2014-10-16 23:38:12
可能重复[如何,如果“对重复密钥更新”的行插入或更新使用时,知道吗?](HTTP:/ /stackoverflow.com/questions/10709380/how-to-know-if-when-using-on-duplicate-key-update-a-row-was-inserted-or-update) – 2014-10-16 23:41:29
获取最后一个插入ID。在更新的情况下,与使用mysql_affected_rows相比,它将为空 – Zalaboza 2014-10-16 23:50:19