Php 如果行没有';更新多行时是否不存在?
我有一个MySQL查询,如下所示:Php 如果行没有';更新多行时是否不存在?,php,mysql,case,insert-update,Php,Mysql,Case,Insert Update,我有一个MySQL查询,如下所示: UPDATE `Table` SET `Column` = CASE WHEN `Option Id` = '1' THEN 'Apple' WHEN `Option Id` = '2' THEN 'Banana' WHEN `Option Id` = '3' THEN 'Q-Tip' END Option Id | Column 1 | x 2 |
UPDATE `Table` SET `Column` =
CASE
WHEN `Option Id` = '1' THEN 'Apple'
WHEN `Option Id` = '2' THEN 'Banana'
WHEN `Option Id` = '3' THEN 'Q-Tip'
END
Option Id | Column
1 | x
2 | x
“我的表”当前看起来如下所示:
UPDATE `Table` SET `Column` =
CASE
WHEN `Option Id` = '1' THEN 'Apple'
WHEN `Option Id` = '2' THEN 'Banana'
WHEN `Option Id` = '3' THEN 'Q-Tip'
END
Option Id | Column
1 | x
2 | x
我希望它能导致:
Option Id | Column
1 | Apple
2 | Banana
3 | Q-Tip
但它不会插入Q-Tip行。我已经查阅并阅读了一些关于重复键更新时插入的和替换的内容,但是我找不到一种方法让它们使用大小写来处理这一多行更新。我是否必须为每一行编写一个单独的查询来实现这一点,或者在MySQL中有一种很好的方法来实现这一点
选项Id
不是键本身,而是主键的一部分
编辑更多信息:
我在用PHP编程,本质上是为用户存储一个数组<代码>选项Id
是键,列
是值。因此,为了简单起见,我的桌子可能看起来像:
User Id | Option Id | Value
10 | 1 | Apple
10 | 2 | Shoe
11 | 1 | Czar
...
该用户可以轻松地更新数组中的元素并添加新元素,然后将该数组发布到服务器,在这种情况下,我希望将其存储在表中。上面我的查询更新了它们编辑过的所有数组元素,但它不会插入新的数组元素。我想知道是否有一个查询可以从POST
获取我的数组并将其插入表中,而不必编写循环并对每个数组元素进行查询。当然它不会插入。因为没有这样的值,所以无法更新它
我假设您正在通过输入已经存在的值来规范化数据库,现在希望为每个有效值添加所需的映射
所以最好从头开始,只做插入。您可以随时查询数据库中的条目,然后根据您的结果选择更新或插入。我认为这样的更新没有意义。
为什么没有一个单独的带有选项Id和相应值的表,在这个表中只留下链接到用户Id的选项Id?如果option\u Id
是主键,这应该可以工作:
REPLACE INTO `Table` (`Option_Id`, `Column`) VALUES
(1, 'Apple'),
(2, 'Banana'),
(3, 'Q-Tip');
该语句的意思是:如果PK已经存在,则插入给定的行或替换值。您案例中的ID与期望的结果不匹配,拼写错误?是的,这是一个拼写错误,感谢您指出:)感谢您的回复,我非常感谢。我在问题中添加了一些附加信息。我的目标是尽可能避免将查询放入php循环中。谢谢!我不知道插入多行的语法。它成功了!