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