Can MySQLi Prepare Multiple Queries in One Statement?
While it is not possible to prepare multiple queries with a single MySQLi statement, workarounds exist to achieve similar functionality.
Multi-Statement Preparation
Attempts to prepare multiple queries in a single MySQLi statement will result in an error. Alternatively, you can create multiple prepared statements:
<code class="php">$stmt = $mysqli->prepare("SELECT * FROM users"); $stmt2 = $mysqli->prepare("INSERT INTO orders (user_id) VALUES (?)");</code>
Combining Prepared Statements
To execute multiple queries in a controlled manner, you can combine the prepared statements using a transaction:
<code class="php">mysqli->begin_transaction(); $stmt->execute(); $stmt2->execute(); mysqli->commit(); // Execute transaction</code>
This ensures that both queries are executed successfully or not at all.
Error Handling
If any of the prepared statements fails during execution, the transaction will roll back and no changes will be made. It is essential to check for errors after executing a prepared statement:
<code class="php">if ($stmt->errno != 0) { echo "Error: " . $stmt->error; }</code>
Additional Tip
The "call to member function on a non-object" error typically occurs when the prepare() method fails. Ensure that your query string is syntactically correct before proceeding.
The above is the detailed content of Can MySQLi Prepare Multiple Queries in a Single Statement?. For more information, please follow other related articles on the PHP Chinese website!