为了账号安全,请及时绑定邮箱和手机立即绑定

mysqli:它可以在一个语句中准备多个查询吗?

mysqli:它可以在一个语句中准备多个查询吗?

PHP
白猪掌柜的 2019-08-28 15:00:27
mysqli:它可以在一个语句中准备多个查询吗?我想知道我是否可以准备一个执行多个查询的mysqli语句: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...);and after all mysqli->bind_param("sssss", 1, 2, 3, 4, 5);以这种方式它会产生错误:在...中的非对象上调用成员函数bind_param()$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();
查看完整描述

2 回答

?
森栏

TA贡献1810条经验 获得超5个赞

预准备语句只能执行一个MySQL查询。您可以在不同的变量中准备任意数量的语句:

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

然后再执行它们。如果你想确保两者都不能运行,除非两者都能够运行,那么你需要研究交易,就像Thomas说的那样。

另外,一般提示:“对非对象调用成员函数”是prepare()失败时获得的标准错误,因此$stmt实际上并不是一个准备好的语句对象。这通常意味着您需要在prepare()语句中查找错误,而不是以后查找错误。


查看完整回答
反对 回复 2019-08-28
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

不,单次调用mysqli prepare()函数无法一次准备多个查询。但是,您可以使用不同的变量为执行准备多个查询。此处提供了此功能的文档。

它看起来像你正在尝试设置一个交易,这是一个与你问的不同的问题。如果这是您真正想知道的,那么您需要提供有关数据库设置的更多信息,并且可能需要提供有关您尝试解决的用例的更多详细信息。


查看完整回答
反对 回复 2019-08-28
  • 2 回答
  • 0 关注
  • 466 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信