gpt4 book ai didi

php - 插入或更新如果存在行

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

我正在使用与此类似的 mysql 约定来输入表单信息

form_id - INT PRI
user_id - INT
field_name - VARCHAR
field_value - TEXT

我目前有一个 PHP 脚本,它会遍历所有表单字段的 foreach 循环,并首先检查它是否存在,如果计数大于 0,则更新该字段。如果不存在,则插入该行。不幸的是,我试图通过 PHP 脚本处理一百多个字段,并且这种方法被证明非常耗时。有什么更快的方法可以做到这一点?我认为我不能使用重复 key 更新,因为只有 form_id 是唯一的。

每一行都是这样的:

1, 1, name, Andy
2, 1, date, 2012-10-05
3, 2, name, John

这样说有道理吗?

最佳答案

我看到这是MySQL。根据您的描述,您正在使用 PHP 进行双重工作。只需收集所有值并使用正确的 SQL 将它们触发到数据库中即可。为此,您可以使用 MERGE STATEMENTS,它在几乎所有数据库系统上都可用,只是语法不同。合并语句正在插入一行,如果一行已经存在,它只会用新值更新该行。或者你可以说它应该忽略行等。有很多可能性。

例如(不是 MYSQL!):

 MERGE INTO tablename USING table_reference ON (condition)
WHEN MATCHED THEN
UPDATE SET column1 = value1 [, column2 = value2 ...]
WHEN NOT MATCHED THEN
INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...

在 MySQL 中,情况略有不同。您可以在此处使用 INSERT...ON DUPLICATE UPDATE

http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

为此,这是一个示例(未使用您的字段):

INSERT INTO table (table.a, table.b, table.c, table.d)  -- define your insert statement
VALUES -- use the VALUES command to add several rows, or just one. Depends on your interface
('key1','key2','exampleVal','exampleValb'),
('key1','key3','exampleVal2131','exampleValasfasf')
ON DUPLICATE KEY UPDATE -- Here the check appears. If the Values with key (a) + key (b) exist it will just UPDATE the fields c and d with VALUES(table.c) and VALUES(table.d)
table.c = VALUES(table.c),
table.d = VALUES(table.d)

我希望无论如何我都能理解这一点。但这可以节省您大量时间!

关于php - 插入或更新如果存在行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158238/

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