1

我是 PDO 的新手,我正在尝试制作一个按钮,当用户按下它时,相应数字的值会增加一。

$statement = "UPDATE table SET counter=? WHERE id=?";
$z = $db->prepare($statement);
$z->execute(array($counter+1,$id));

$id正在正确发送,但我不知道如何将一个添加到柜台。

4

1 回答 1

7

您可以让 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

于 2013-07-15T16:56:35.820 回答