我是PDO的新手,我正在尝试创建一个按钮,当用户按下它时,相应数字的值增加1。
$statement = "UPDATE table SET counter=? WHERE id=?";
$z = $db->prepare($statement);
$z->execute(array($counter+1,$id));
$id
正在正确发送,但我不知道如何向计数器添加一个。
答案 0 :(得分:6)
您可以让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