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