在準備好的多重插入查詢中解決「SQLSTATE[HY093]:無效參數號碼」時發生錯誤
嘗試執行多重插入查詢時,可能會出現錯誤「SQLSTATE[HY093]:無效的參數編號:參數未定義」。儘管參數數組和輸入資料元素的計數匹配,但此錯誤仍然存在。
理解錯誤
此錯誤是由於參數數組和輸入資料元素的數量不匹配而出現的參數數組($values) 和輸入資料($matches)中的元素。執行準備好的語句時,查詢需要特定數量的參數,任何差異都會導致此錯誤。
解決問題
要解決此問題,確保在進入生成參數的循環之前初始化 $values。這可以防止任何預先存在的值影響計數。此外,驗證資料庫中「雜湊」列是否存在唯一索引將進一步防止潛在的衝突。
修訂後的代碼
這裡是修訂後的代碼,合併這些修訂:
$matches = array('1'); $count = count($matches); $values = []; for ($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // INSERT INTO DATABASE $sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)"; $stmt = $dbh->prepare($sql); $data = $stmt->execute($matches);
以上是為什麼我在準備的多個 INSERT 查詢中收到「SQLSTATE[HY093]:無效的參數號碼」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!