Php 是否可以使用单个mysql\u查询插入多条记录?

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

我在一个网站上工作,我必须在不同的表中插入值。因此,考虑到这一需求,我是否可以在php中的单个mysql_查询中使用多个查询

例如:

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();