gpt4 book ai didi

php - 遍历数组并根据列中的空值插入或更新列 - MySQL

转载 作者:行者123 更新时间:2023-11-30 23:10:15 25 4
gpt4 key购买 nike

我将有用户输入内容(电子邮件地址),我将根据这些电子邮件来自哪个项目将其引入数据库 (MySQL)。我有 1 个用于所有项目的电子邮件表,数量不多(大约 20 个),每个项目都有一个单独的列。一些电子邮件最终将被删除,一些行中的一些字段将被标记为空或 null。

大多数时候,电子邮件会成批发送(可以这么说),所以我必须遍历一系列电子邮件,并针对每个值,将该值引入该电子邮件所属的任何项目。到目前为止一切顺利,这已经完成了。

但是,正如我所说,一些电子邮件将被删除。我想用电子邮件地址替换空字段,如果没有找到空字段,则将电子邮件插入列中。

电子邮件会成批发送,因此我将遍历数组并根据空字段针对每个值继续执行插入或更新语句。

长话短说,我有这段代码:

SELECT column_name 
FROM table_name
CASE
WHEN column_name='' OR column_name IS NULL
THEN
UPDATE SET column_name='new_value'
WHERE column_name='' OR column_name IS NULL
ELSE INSERT INTO table_name(column_name) VALUES ('new_value')
END

这是行不通的。我 100% 确定我在某处弄乱了语法,但是 MySQL 手册没有太大帮助。有些页面建议使用 CASE,有些建议使用 IF。

如果有人可以看一下并给我一些指示,我将不胜感激。

我为此使用 PHP。

如果我的解释中有任何不清楚的地方(我有这样做的习惯),请告诉我。


查看 MySQL 手册中的 IF/ELSEIF:

IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF

我的新代码和没有改进的代码应该是这样的:

SELECT column_name 
FROM table_name
IF column_name='' OR column_name IS NULL
THEN UPDATE SET column_name='new_value' WHERE column_name='' OR column_name IS NULL
ELSE INSERT INTO table_name (column_name) VALUES ('new_value)
END IF

这当然行不通。

最佳答案

如果 column_name 是 PRIMARY KEY 或 UNIQUE INDEX,您可以使用 INSERT.. ON DUPLICATE KEY UPDATE :

INSERT INTO table_name(column_name) VALUES ('new_value')
ON DUPLICATE KEY UPDATE column_name = 'new_value'

来自文档:

If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row is performed.

关于php - 遍历数组并根据列中的空值插入或更新列 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20095951/

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