Php PDO将一个添加到值中

Php PDO将一个添加到值中,php,database,pdo,sql-update,Php,Database,Pdo,Sql Update,我是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

我是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
如果记录不存在,则插入该记录;如果记录存在,则更新该记录。这比执行多个查询来首先检查记录是否存在,如果丢失则插入更有效

有关更多信息,请参见此处:

您可以让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
如果记录不存在,则插入该记录;如果记录存在,则更新该记录。这比执行多个查询来首先检查记录是否存在,如果丢失则插入更有效

有关更多信息,请参见此处:

你不能只使用:UPDATE table SET counter=counter+1,其中id=?@SamuelCook:理想情况下是在可序列化事务中…否则,你不能真正相信结果。@赵,Samuel的回答不需要任何类型的事务,它是一个原子操作,完全可以预测。@Geoffrey:你有关于这方面的链接吗?我还没有在文档中找到关于它的任何信息…@cHao:see你能不能只使用:UPDATE table SET counter=counter+1,其中id=?@SamuelCook:理想情况下是在可序列化事务中…否则,你不能真正相信结果。@cHao,Samuel的答案不需要任何类型的事务,这是一个原子操作,是完全可预测的。@Geoffrey:你有相关信息的链接吗?我还没有在文档中找到关于它的任何内容…@cHao:看到插入或更新的要求了吗?@JasonMcCreary-Answer刚刚更新,以涵盖最初的要求以及这个方便的额外要求。如果计数器不是计数器表中的字段,那么说,如果它是用户信息表,如果传递了一个不正确的ID,那么创建一个新记录是一个非常糟糕的主意…@cHao-请查看下面的部分,如果你需要插入一个记录,如果它不存在的话。谢谢。如果字段为空,我将其设置为默认值0,因此我只使用第一个字段,但它们都很有用。插入或更新的要求是什么?@JasonMcCreary-Answer刚刚更新,以满足初始要求以及这一方便的额外要求。如果计数器不是由计数器组成的表中的字段,请说,如果这是一个用户信息表,如果传递了不正确的ID,那么创建一个新记录将是一个非常糟糕的主意…@cHao-请参阅下面的部分,如果不存在记录,请先插入该记录。谢谢。如果字段为空,我将其设置为默认值0,因此我只使用第一个字段,但它们都很有用。