Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何同时使用mysql更新查询和mysql插入查询?_Php_Mysql_Sql Update_Insert Update_Insert Query - Fatal编程技术网

Php 如何同时使用mysql更新查询和mysql插入查询?

Php 如何同时使用mysql更新查询和mysql插入查询?,php,mysql,sql-update,insert-update,insert-query,Php,Mysql,Sql Update,Insert Update,Insert Query,这就是条件:有一个html和php格式的表单,大约有120个字段,我在提交时为一个网站制作这个表单,然后转到一个php页面,我首先使用$_REQUEST[]检索所有值,然后使用insert query在mysql数据库的同一个表中的特定列中插入所有值。现在,我必须再次执行所有更新这些值的过程。因为insert查询和update查询的语法完全不同 我不想再写100行代码。有没有办法使用我在insert查询中编写的代码来更新数据?和的语法非常相似: 有关此构造的详细信息。实际上,在MySQL中,有一

这就是条件:有一个html和php格式的表单,大约有120个字段,我在提交时为一个网站制作这个表单,然后转到一个php页面,我首先使用$_REQUEST[]检索所有值,然后使用insert query在mysql数据库的同一个表中的特定列中插入所有值。现在,我必须再次执行所有更新这些值的过程。因为insert查询和update查询的语法完全不同


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

和的语法非常相似:


有关此构造的详细信息。

实际上,在MySQL中,有一种替代的insert语法,与update语法非常相似。你可以写

insert customer set customerid=12345, firstname='Fred', lastname='Jones
等等

就我个人而言,我更喜欢这种语法,因为很容易看到每个字段的值。对于字段列表很长的记录来说尤其如此

另一方面,它不是标准的SQL,因此,如果您决定将应用程序移植到其他数据库引擎,则必须重写所有插入内容


我偶尔使用的另一个选项是编写一个小函数来创建insert和update语句。然后,无论生成的代码有多不同,函数的语法都可以相同。

另一种选择,根据需求和键,您可以使用:

replace into tbl (<cols>) values (<vals>)
insert ignore into tbl (<cols>) values (<vals>)
如果不存在,将插入,或者在一个查询中基于键插入/更新进行替换

或者,如果您只是在插入,不想插入两次,则可以使用:

replace into tbl (<cols>) values (<vals>)
insert ignore into tbl (<cols>) values (<vals>)
其中,如果记录已基于键插入,则会被正常忽略


更多信息

我使用不同的语法插入TableColum1、Columm2,…value'value1'、'value2'…这次我使用了标准语法,但将来我肯定会使用这种语法插入和更新都很容易,我怎么从来都不知道这种语法?@pmv:因为你生活在一个贫穷的世界,贫穷的生活。是的,这正是我想要的,但我无法理解两者之间的区别。我的主键是不同城市的名称,我真正想要的是,如果城市名称已经存在于数据库中,它将更新城市的数据,否则添加一个新行,这两个名称中的哪一个更好scenarioHi Danny,根据您的请求,您希望使用替换为。请记住,如果您的城市包含多个州,为了避免城市名称与多个州中的相同城市名称冲突,您可能希望将州和城市设置为唯一键。。这样,当您将替换为时,它将同时使用城市和州,而不会更新其他州的城市谢谢,是的,我已经将州和城市都设置为主要。谢谢:嗨,丹尼,你:。。这只是一个选项/建议,城市和州应该是索引,城市和州一起应该是唯一的。。ALTER TABLE添加唯一的城市、州。。或者使用phpMyAdmin,在城市和州中打一个复选标记,然后单击唯一的U,可能是一个自动递增的id或其他东西