Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当3列';s值匹配_Php_Mysql - Fatal编程技术网

Php 当3列';s值匹配

Php 当3列';s值匹配,php,mysql,Php,Mysql,我在重复键上使用了一个查询,我将唯一键设置为分类,国家和年份 但是,我需要更新仅当分类&&country&&year所有3个都具有来自用户输入的相同值时 但当其中一个值匹配时,它会更新同一行 它成为classify||country|年 这就是我需要的 INSERT INTO statistics(classify, country, ads, year) VALUES (:classify, :country, 1, :year) ON DUPLICATE KEY UPDATE ads =

我在重复键上使用了一个查询
,我将
唯一键设置为
分类
国家
年份

但是,我需要
更新
仅当
分类&&country&&year
所有3个都具有来自用户输入的相同值时

但当其中一个值匹配时,它会更新同一行

它成为
classify||country|年

这就是我需要的

INSERT INTO statistics(classify, country, ads, year) 
VALUES (:classify, :country, 1, :year) 
ON DUPLICATE KEY UPDATE ads = ads + 1

有什么办法解决这个问题吗?

在(分类、国家、年份)上创建一个唯一的约束

更改表统计添加约束tb_uq unique(分类、国家、年份)
我已经尝试过了,但没有用不,应该这样做。请稍候,我将创建小提琴。@user2178521您是如何尝试的?它应该能工作。@JW웃 好的,那么约束应该是它,当其中一个值为match时,我只是阅读了
,并考虑了可能性:)这本身不是一个索引,而是一个约束;)这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。@MartinPrikryl缺少的部分是该约束。如果存在,则重复键上的
起作用,如果不存在,则不会起作用。虽然没有解释,但肯定是解决方案。
 UPDATE statistics SET ads = ads + 1 
    WHERE classify='$classify' && country='$country' && year='$year'