理解mysqli_bind_param() 中的「變數數量與參數數量不符」錯誤
在MySQL 的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 值的佔位符: 「?'」。在準備好的語句中,問號用作稍後綁定的值的佔位符。但是,當它們用引號括起來時,它們將被視為文字文字而不是佔位符。
修正準備好的語句
要解決此問題,請刪除周圍的引號這 ?在準備好的語句中 make 的佔位符:
$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model"); $stmt->bind_param('is', $year, $make); $stmt->execute();
現在,準備好的語句有一個 ?每個變數、年份和品牌的佔位符。
要記住的要點
以上是如何解決 mysqli_bind_param() 中的「變數數量與參數數量不符」問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!