MySQLi 可以在一條語句中準備多個查詢嗎?
雖然不可能使用單一 MySQLi 語句來準備多個查詢,但存在解決方法來實現類似的功能。
多語句準備
嘗試在單一 MySQLi 語句中準備多個查詢將導致錯誤。或者,您可以建立多個準備好的語句:
<code class="php">$stmt = $mysqli->prepare("SELECT * FROM users"); $stmt2 = $mysqli->prepare("INSERT INTO orders (user_id) VALUES (?)");</code>
組合準備好的語句
要以受控方式執行多個查詢,您可以使用transaction:
<code class="php">mysqli->begin_transaction(); $stmt->execute(); $stmt2->execute(); mysqli->commit(); // Execute transaction</code>
這確保兩個查詢都成功執行或根本不執行。
錯誤處理
如果任何準備好的語句執行期間失敗,事務將回滾並且不會進行任何更改。執行準備好的語句後檢查錯誤非常重要:
<code class="php">if ($stmt->errno != 0) { echo "Error: " . $stmt->error; }</code>
其他提示
通常會出現「呼叫非物件上的成員函數」錯誤當prepare( )方法失敗時發生。在繼續之前,請確保您的查詢字串語法正確。
以上是MySQLi 可以在一條語句中準備多個查詢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!