如何使用mysql更新查询和mysql一起插入查询?

时间:2011-07-26 18:09:47

标签: php mysql sql-update insert-update insert-query

这个条件:有一个表格在html和php haivng大约120个字段它为一个网站我正在提交这个表单进入一个php页面,我首先使用$ _REQUEST []然后使用$ _REQUEST []来检索所有值insert查询将所有这些插入到我的mysql数据库中同一个表中的特定coloums中。现在我将不得不再次执行所有过程来更新这些值。插入查询和更新查询的语法完全不同。

我不想再写100行代码。有没有办法使用我在插入查询中编写的代码来更新数据。?

4 个答案:

答案 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>)

如果已经根据键插入了记录,则会优雅地忽略它

了解更多信息http://dev.mysql.com/doc/refman/5.0/en/replace.html

答案 2 :(得分:1)

INSERTUPDATE的语法非常相似:

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