首頁  >  文章  >  後端開發  >  如何解決 mysqli_bind_param() 中的「變數數量與參數數量不符」問題?

如何解決 mysqli_bind_param() 中的「變數數量與參數數量不符」問題?

Susan Sarandon
Susan Sarandon原創
2024-10-22 12:46:02468瀏覽

How to Troubleshoot

理解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();

現在,準備好的語句有一個 ?每個變數、年份和品牌的佔位符。

要記住的要點

  • 在準備好的語句中,問號是值的佔位符。
  • 不要將佔位符括在引號中。
  • 準備好的語句中的佔位符數量必須與使用bind_param()綁定的變數數量相對應。

以上是如何解決 mysqli_bind_param() 中的「變數數量與參數數量不符」問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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