我是新來的PDO,我試着做一個按鈕,當用戶按下按鈕時,相應數字的值增加1。PDO添加一個值
$statement = "UPDATE table SET counter=? WHERE id=?";
$z = $db->prepare($statement);
$z->execute(array($counter+1,$id));
$id
被正確發送,但我不知道如何添加一個到櫃檯。
我是新來的PDO,我試着做一個按鈕,當用戶按下按鈕時,相應數字的值增加1。PDO添加一個值
$statement = "UPDATE table SET counter=? WHERE id=?";
$z = $db->prepare($statement);
$z->execute(array($counter+1,$id));
$id
被正確發送,但我不知道如何添加一個到櫃檯。
你可以讓MySQL的執行更新了你,沒必要獲取計數器和在MySQL更新..
UPDATE table SET counter = counter + 1 WHERE id = ?
這也原子,同時使多命中不會導致計數錯過了。如果你需要插入的記錄,如果不首先存在,你可以改變這一點請向以下,只要你對「ID」列的唯一/主鍵:
INSERT INTO table (id, counter) VALUES (?, 1) ON DUPLICATE KEY UPDATE counter = counter + 1
這將既處理插入記錄如果它不存在,並且如果它存在,則更新它。這會更有效,然後執行多個查詢來檢查記錄是否先存在,如果缺失則插入。
在這裏看到更多的信息: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
你就不能使用:' 「UPDATE表SET計數器=計數+ 1 WHERE ID =?」' –
@SamuelCook:理想情況下在串行事務...否則,你不能真正相信結果。 – cHao
@cHao,Samuel的答案不需要任何形式的交易,它是一個原子操作,並且是完全可預測的。 – Geoffrey