我正在开发一个网站,我必须在不同的表格中插入值。所以要保持这种需要,我是否可以在php中使用单个mysql_query中的多个查询。
例如:
mysql_query("insert into tableA (e-mail, name) values ('xxx', 'xxx'); insert into tableB (xxx, xxx, xxx) values ('value1','value2','value3')")
我想在单个语句中运行多个查询。请提出一些解决方案。
答案 0 :(得分:0)
不,这是不可能的。过时的mysql_*
API仅允许一次执行一个查询。为此,您需要使用mysqli
API和mysqli_multi_query()
。
答案 1 :(得分:0)
单个MySQL“INSERT”语句可以支持多个VALUE元组,如果它们属于同一个表。
mysql_query("insert into tableA (e-mail, name) values ('xxx', 'xxx'), ('yyy','yyy')")
但是,使用mysql_*
函数无法实现您的目标。
虽然mysqli_*
API允许您一次运行多个查询,但我建议您至少出于以下两个原因禁止这样做:
mysqli_multi_query()
mysql_*
所看到的,从该函数中获取错误可能非常麻烦。实际上,如果第一个查询失败,该函数仅返回“false”;要获得其他查询的结果,您需要调用另一个函数。一般来说,为什么需要将多个查询组合在一起?最终,你节省的时间很少 相反,如果您的目标是同时执行多个查询,并且如果一个查询失败则使整个查询失败,您可以使用事务(在某些情况下也可以加速插入)。 MySQLi和PDO都支持事务:请参阅此处的示例,了解PDO docs
PS:一般来说,完全避免使用{{1}}函数是个好主意,因为这些API已被弃用。
答案 2 :(得分:0)
欢迎来到PDO
:
使用PDO可以执行以下操作:
$sql = "
insert into tableA (e_mail, name) values (:e_mail, :name);
insert into tableB (xxx1, xxx2, xxx3) values (:xxx1, :xxx2, :xxx3)
";
首先准备好Query
然后准备VOILA !!
或使用Transaction
方法:
$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();