mysqli: "變數數量與參數數量不符"
針對使用mysqli 準備好的語句時遇到的問題,根本原因在於準備好的語句的語法不正確。如回覆中所提到的,以下更正可以解決該問題:
$stmt = $mysqli->prepare( "SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model" ); $stmt->bind_param('is', $year, $make); $stmt->execute();
準備聲明時,用問號將輸入資料的佔位符括起來至關重要。然而,在原始語句中,make 變數的佔位符被括在引號內,使其無法被辨識為佔位符。因此,問號的數量與 bind_param() 中變數的數量不符。
因此,修正後的準備好的語句透過刪除 ? 周圍的引號消除了這種差異。佔位符,它允許使用bind_param()正確綁定輸入變數。這確保了語句可以成功執行,產生期望的結果。
以上是為什麼變數和參數不符會導致 mysqli 準備語句出錯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!