gpt4 book ai didi

php - MySQL 用 PHP 递增 int

转载 作者:行者123 更新时间:2023-11-30 00:18:43 25 4
gpt4 key购买 nike

我是 PHP 和 mysql 新手,所以这可能是一个很容易回答的问题。

我正在制作一个“图像 A 与图像 B”网站(这样我就可以学习一些 PHP+mysql 概念)。

屏幕上加载两张图片,您可以单击您最喜欢的一张。如果您点击图像 A,它的评分会增加 +1,而图像 B 的负面评分会增加 +1。我希望正面投票和负面投票分开,这就是为什么我不只使用一个值。

表格看起来像;

 imageID | votesUP | votesDOWN
X54vb | 1 | 0
pe9D3 | 0 | 1

如果图像 X54vb 与图像 pe9D3 对抗并获胜,则表格将如上例所示。

我想进行一个查询来增加该值(如果该条目不存在,则创建该条目)。

$voteup 是本例中的图像 id;

REPLACE INTO images SET votesUP = votesUP + 1, imageID = '" . $voteup . "';

如果该条目不存在,则会创建该条目,但如果存在,则不会增加该值。该值始终恰好为 1。

我也尝试过;

UPDATE images SET votesUP = votesUP + 1 WHERE imageID = '" . $voteup . "';

这会增加值,但如果条目不存在则不会创建条目。当匹配 $voteup 的条目尚未创建时,似乎什么也没有发生。

所以,基本上,我只想有一个查询来创建一个条目(如果它不存在),然后在存在时增加它。

我不想尝试读取条目来确认它是否存在,如果不存在则创建一个条目,然后递增它。如果可能的话,我想要一个高效的单个查询。

这是我创建的表;

CREATE TABLE images
(
imageID CHAR(15),
votesUP INT DEFAULT 0,
votesDOWN INT DEFAULT 0,
PRIMARY KEY (imageID)
)"

此外,REPLACE INTOUPDATE 之间到底有什么区别?

谢谢。

最佳答案

您需要的是使用 INSERT ... ON DUPLICATE KEY UPDATE ... 我认为这就是您所需要的。

INSERT INTO images ( imageID, votesUP ) values
( '" . $voteup . "', 1 )
ON DUPLICATE KEY UPDATE votesUP=votesUP+1;

但这只是增量,减量则相反

INSERT INTO images ( imageID, votesDOWN ) values
( '" . $voteup . "', 1 )
ON DUPLICATE KEY UPDATE votesDOWN=votesDOWN+1;

这是文档 INSERT ... ON DUPLICATE KEY UPDATE Syntax

关于php - MySQL 用 PHP 递增 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23427175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com