2012-06-17 47 views
0

我有一個成功運行的mysql ON DUPLICATE KEY UPDATE語句。Wamp,MYSQL和ON DUPLICATE KEY UPDATE不影響正確的行數?

儘管在手冊中說,對於插入的行,受影響的行是1,更新的行是2.我想我可以通過簡單的操作來計算插入行的數量;

$i = count($insert); // the insert array 
// execute the query here 
$inserted = ($i * 2) - $q -> rowCount(); 

等於$inserted的等式返回插入行數(根據mysql)。

雖然在我的筆記本電腦上運行wamp,但只插入重複值時,我得到的行數爲0!爲什麼會這樣呢?

由於

回答

2

rowCount()功能將只返回1或2表示的更新或插入。使用ON DUPLICATE KEY UPDATE意味着如果您執行多個插入/更新,則會放棄知道有多少行受到影響。

在您的實例中,可能是因爲您獲得的行數爲0,因爲如果您使用相同的值進行更新,則返回值爲0(即無更改)。 A comment on the PHP manual建議您可以將PDO屬性PDO::MYSQL_ATTR_FOUND_ROWS添加到true以獲取更新查詢實際找到/匹配的行數。

E.g.

$p = new PDO($dsn, $u, $p, array(PDO::MYSQL_ATTR_FOUND_ROWS => true)); 
+0

謝謝你這樣做:) – Griff

相關問題