單一 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中文網其他相關文章!