这个条件:有一个表格在html和php haivng大约120个字段它为一个网站我正在提交这个表单进入一个php页面,我首先使用$ _REQUEST []然后使用$ _REQUEST []来检索所有值insert查询将所有这些插入到我的mysql数据库中同一个表中的特定coloums中。现在我将不得不再次执行所有过程来更新这些值。插入查询和更新查询的语法完全不同。
我不想再写100行代码。有没有办法使用我在插入查询中编写的代码来更新数据。?
答案 0 :(得分:6)
实际上在MySQL中有一种替代的insert语法,它与update的语法非常相似。你可以写
insert customer set customerid=12345, firstname='Fred', lastname='Jones
等
我个人更喜欢这种语法,因为很容易看出每个字段的值是多少。对于包含长字段列表的记录尤其如此。
在负面,它不是标准SQL,因此如果您决定将应用程序移植到其他数据库引擎,则必须重写所有插入内容。
我偶尔使用的另一个选项是编写一个小函数来创建插入和更新语句。然后,无论生成的代码有多么不同,函数的语法都可以相同。
答案 1 :(得分:2)
另一种选择,根据要求和密钥,您可以使用:
replace into tbl (<cols>) values (<vals>)
如果不存在则插入,或者基于键替换(在一个查询中插入/更新)
或者如果您只是插入并且不想插入两次,则可以使用:
insert ignore into tbl (<cols>) values (<vals>)
如果已经根据键插入了记录,则会优雅地忽略它
答案 2 :(得分:1)
INSERT INTO <table> SET
column1 = value1,
column2 = value2,
...
;
UPDATE <table> SET
column1 = value1,
column2 = value2,
...
WHERE <condition>
;
答案 3 :(得分:1)
INSERT INTO yourtable (field1, field2, field3, ...)
VALUES ($field1, $field2, $field3, ...)
ON DUPLICATE KEY UPDATE field1=VALUES(field1), field2=VALUES(field2), etc...
有关此构造的详细信息here。