首頁 > 資料庫 > mysql教程 > 為什麼我的 MySQL 準備語句失敗並出現「類型定義字串中的元素數量與綁定變數的數量不符」錯誤?

為什麼我的 MySQL 準備語句失敗並出現「類型定義字串中的元素數量與綁定變數的數量不符」錯誤?

Barbara Streisand
發布: 2024-11-19 00:16:02
原創
714 人瀏覽過

Why Does My MySQL Prepared Statement Fail with a

不匹配的綁定變數之謎

問題圍繞著為大量 MySQL 準備語句綁定參數時遇到的錯誤。問題在於bind_param方法中「s」類型指示符的數量與查詢字串中問號(?)的數量不符。

理解bind_param()

bind_param() 是一種 mysqli 方法,它用實際資料取代準備好的查詢中的問號 (?)。類型定義字串中的每個字元(例如“s”代表字串)對應一個問號和要綁定的資料。

匹配綁定變數的數量

要記住的關鍵點是類型定義字串中的字元數(例如「s,s,s」)必須與問號的數量精確匹配(?) 在查詢字串中。例如,帶有 3 個問號的查詢需要帶有 3 個「s」字元的類型定義字串。

檢查程式碼

在給定的PHP 程式碼中,查詢字串包含65個問號,但是bind_param()方法使用了「s,s,s, s,s,s,s,s」(總共只有8個「s」 人物)。這種差異會導致錯誤訊息:「類型定義字串中的元素數量與綁定變數的數量不符。」

要解決問題:

要若要修正問題,請驗證bind_param() 方法中「s」字元的數量是否與查詢字串中問號(?) 的數量相符。在這種情況下,bind_param() 方法應替換為:

$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", ...);
登入後複製

附加說明:

  • 類型定義字串中的字元不應該是用逗號分隔。
  • 手冊頁中所描述的格式應該遵循 mysqli_stmt::bind_param()。

以上是為什麼我的 MySQL 準備語句失敗並出現「類型定義字串中的元素數量與綁定變數的數量不符」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板