預處理語句中參數數量與bind_param綁定的變數數量不一致
P粉578343994
2023-08-22 23:51:55
<p>這是我的程式碼片段:</p>
<pre class="brush:php;toolbar:false;">$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types
WHERE year = ? AND make = '?' ORDER by model");
$stmt->bind_param('is', $year, $make);
$stmt->execute();</pre>
<p>當我輸出$year和$make的值時,我可以看到這些值,但是當我運行這個腳本時,我得到一個空值,並且我的日誌檔案中出現以下警告:</ p>
<blockquote>
<p>PHP Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement</p>
</blockquote>
<p>在這種情況下,year在資料庫中的類型是int(10),我已經嘗試將其轉換為int類型進行傳遞,而make是一個帶有utf8_unicode_ci編碼的varchar(20)。我有什麼遺漏嗎? </p>
您的預處理語句是錯誤的,應該是:
當您準備一個語句時,您必須用問號而不是引號來取代每個變數。在引號內的問號將不會被辨識為佔位符。
問號的數量必須等於
bind_param()
中的變數數量