首页  >  文章  >  数据库  >  可以在单个 mysqli 语句中执行多个查询吗?

可以在单个 mysqli 语句中执行多个查询吗?

Linda Hamilton
Linda Hamilton原创
2024-10-29 03:57:29171浏览

Can You Execute Multiple Queries in a Single mysqli Statement?

单个 mysqli 语句中的多个查询

您可以准备一个执行多个查询的 mysqli 语句吗?

问题:

是否可以构造一个执行多个查询的 mysqli 语句?例如:

<code class="php">mysqli->prepare("query1 ...1,2,3 param...; query2...4,5 param...");
or 
mysqli->prepare("insert into ...1,2,3 param...; insert into...4,5 param...");</code>

尝试这样的构造会导致错误,“在...中的非对象上调用成员函数bind_param()”

<code class="php">$stmt = $sql->getQueryPrepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?); INSERT INTO process (id_user, idp) VALUES (?,?);");

$stmt->bind_param("ssssss",$id, $username, $pw, $email, $id, $idp);

$stmt->execute();
$stmt->close(); </code>

答案:

准备好的语句只能执行单个 MySQL 查询。但是,您可以在单独的变量中准备多个语句:

<code class="php">$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)");
$stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");</code>

这些语句可以随后执行。如果您需要确保两个查询都成功执行,请考虑使用事务。

请记住,“调用非对象上的成员函数”错误通常表示在prepare()语句中失败,而不是后续代码出现问题。

以上是可以在单个 mysqli 语句中执行多个查询吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn