PHP 中的指令不同步錯誤:理解與解決
在準備任何查詢之前,必須執行查詢“SET NAMES 'utf8'”,因為它設定資料庫連接的字元集,並影響後續查詢中資料的解釋。
由於 MySQL 在預處理語句中預設使用非緩衝查詢,因此在單一腳本中執行多個查詢可能會導致問題。 mysqli 執行立即查詢,需要完成一個查詢才能執行另一個查詢。要解決此問題,您可以選擇以下兩種方法:
1. 將結果提取到數組中
此方法涉及執行第一個查詢,將其結果提取到數組中,然後執行第二個查詢。下面的程式碼示範了這一點:
<code class="language-php">$con = mysqli_connect("localhost", "user", "password", "db"); if (!$con) { echo "无法连接到 MySQL 服务器。错误代码:%s\n". mysqli_connect_error(); exit; } // 设置字符集 $con->query("SET NAMES 'utf8'"); // 第一个查询 $countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %"; $numRecords = $con->prepare($countQuery); $numRecords->bind_param("s", $brand); $numRecords->execute(); $result = $numRecords->get_result(); // 将结果提取到数组中 $rowcount = $result->num_rows; // 第二个查询 $rows = getRowsByArticleSearch("test", "Auctions", " ");</code>
2. 緩衝查詢
使用 store_result()
指示 mysqli 緩衝查詢結果,讓您同時執行多個查詢。透過在 prepare()
語句之後加入以下行來實現此目的:
<code class="language-php">$stmt->store_result();</code>
這將有效地將查詢結果保存在緩衝區中,允許您執行第二個查詢而不會遇到「命令不同步」錯誤。
以上是為什麼在 PHP 的 MySQLi 準備語句中出現「指令不同步」錯誤,如何修復它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!