如果已存在相同的问题,请将其标记为重复。
我正在使用MySQL进行插入,而我正在使用PDO预处理语句。我现在想要将一个行数组插入到数据库中。类似的问题可以在Multiple Values Insert with PDO Prepared Statements找到。但是,作者没有考虑在唯一列上发生重复的情况。例如,请考虑下表:
id name counter
其中name
具有唯一属性,并且每当尝试插入现有name
时,计数器增加1.现在我想插入一个具有三个名称的数组,如下所示:
$name_array = array('User A','User B','User C');
假设我的表目前只有用户A且其对应的计数器为1.在这种情况下,我希望插入后的表格如下:
id name counter
1 User A 2
2 User B 1
3 User C 1
我可以使用一个插入语句来完成它吗?如果是,那怎么办?
答案 0 :(得分:1)
首先:恕我直言,这与PHP,PDO或预备语句无关 - 它是关于在特殊情况下将INSERT
转换为UPDATE
。
就是这样,我会通过使用INSERT ON DUPLICATE KEY UPDATE
构造来解决这个问题,在
INSERT INTO tablename(name)
VALUES ('User A'), ('User B'), ('User C')
ON DUPLICATE KEY UPDATE counter=counter+1;
如何将此查询发送到MySQL服务器(无论是PHP / PDO还是其他)都不重要。