首頁 >後端開發 >php教程 >為什麼我在準備的多個 INSERT 查詢中收到「SQLSTATE[HY093]:無效的參數號碼」?

為什麼我在準備的多個 INSERT 查詢中收到「SQLSTATE[HY093]:無效的參數號碼」?

Patricia Arquette
Patricia Arquette原創
2024-12-09 00:25:10936瀏覽

Why Am I Getting

在準備好的多重插入查詢中解決「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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn