綁定參數錯誤:數字不符
在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中文網其他相關文章!