簡體   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