首頁 >資料庫 >mysql教程 >MySQLi 綁定參數錯誤:為什麼我的類型字元數與佔位符不符?

MySQLi 綁定參數錯誤:為什麼我的類型字元數與佔位符不符?

Patricia Arquette
Patricia Arquette原創
2024-11-29 10:05:13286瀏覽

MySQLi Bind Param Error: Why Does My Number of Type Characters Mismatch My Placeholders?

綁定參數錯誤:數字不符

在MySQLi 準備好的語句中,類型字元(例如,字串中的「 s」)的數量bind_param 方法必須與SQL中的佔位符數量(例如“?”)符合

問題摘要

您收到錯誤,因為程式碼中的bind_param 呼叫與準備好的語句中的佔位符數量不符:

$stmt->bind_param("s,s,s,s,s,s,s,...", $project_name, $status, ...);

這可能是由於表單輸入的數量(65)與佔位符的數量不符

正確格式

bind_param的正確格式如下:

$stmt->bind_param("type_characters", $variable1, $variable2, ...);

其中「type_characters」是包含一個字元的字串查詢中的每個佔位符,指示資料的類型

計算類型字元

為避免不匹配,建議手動或使用正規表示式計算佔位符的數量。在您的情況下,您應該確認準備好的語句包含 65 個佔位符。

範例

對於具有 65 個佔位符的修改後的準備好的語句,正確的 bind_param呼叫將是be:

$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssss", $project_name, $status, ...);

提示

為了幫助確保正確綁定,請考慮使用以下方法來計算SQL 查詢中佔位符的數量:

function countPlaceholders($sql) {
  return substr_count($sql, '?');
}

以上是MySQLi 綁定參數錯誤:為什麼我的類型字元數與佔位符不符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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