单个 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中文网其他相关文章!