Php 是否可以使用单个mysql\u查询插入多条记录?
我在一个网站上工作,我必须在不同的表中插入值。因此,考虑到这一需求,我是否可以在php中的单个mysql_查询中使用多个查询 例如:Php 是否可以使用单个mysql\u查询插入多条记录?,php,mysql,Php,Mysql,我在一个网站上工作,我必须在不同的表中插入值。因此,考虑到这一需求,我是否可以在php中的单个mysql_查询中使用多个查询 例如: mysql_query("insert into tableA (e-mail, name) values ('xxx', 'xxx'); insert into tableB (xxx, xxx, xxx) values ('value1','value2','value3')") 我想在一条语句中运行多个查询。请提出一些解决办法 不,这是不可能的。过时的my
mysql_query("insert into tableA (e-mail, name) values ('xxx', 'xxx'); insert into tableB (xxx, xxx, xxx) values ('value1','value2','value3')")
我想在一条语句中运行多个查询。请提出一些解决办法 不,这是不可能的。过时的mysql_*API一次只允许执行一个查询。要做到这一点,您需要使用mysqli API和。如果多个值元组用于同一个表,那么单个MySQL INSERT语句可以支持多个值元组
mysql_query("insert into tableA (e-mail, name) values ('xxx', 'xxx'), ('yyy','yyy')")
但是,使用mysql_*函数是不可能做到的
尽管mysqli_*API允许您同时运行多个查询,但我建议您不要这样做,原因至少有两个:
出于安全考虑,使用事先准备好的语句总是一个好主意。准备好的语句也可以使用。
正如您可以从for mysqli_multi_查询中看到的,从该函数获取错误可能会很麻烦。实际上,如果第一次查询失败,该函数只返回false;要获取其他查询的结果,您需要调用另一个函数。
通常,为什么需要将多个查询组合在一起?最终,你节省的时间将是最小的。
相反,如果您的目标是同时执行多个查询,并且如果其中一个查询失败,则整个查询集都会失败,那么您可以使用事务,在某些情况下还可以加快插入速度。MySQLi和PDO都支持事务:参见这里的PDO示例
PS:一般来说,最好避免完全使用mysql_*函数,因为这些API已被弃用。欢迎使用PDO:
有了PDO,我可以做以下事情:
$sql = "
insert into tableA (e_mail, name) values (:e_mail, :name);
insert into tableB (xxx1, xxx2, xxx3) values (:xxx1, :xxx2, :xxx3)
";
先准备好查询,然后看
或使用交易方法:
请不要使用不适用于您的问题的标签您是否听说过??弃用何时成为过时:-
$con->beginTransaction();
$sql1 = "insert into tableA (e_mail, name) values (:e_mail, :name)";
$sql2 = "insert into tableB (xxx, fff) values (:xxx, :fff)";
$sql3 = "insert into tableC (qqq, bbb) values (:qqq, :bbb)";
$con->commit();