2013-07-24 83 views
1

我在我的PHP腳本中收到以下錯誤消息;PHP:變量數量與預準備語句中的參數數量不匹配

mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement 

但這裏是相關的代碼:

$con = mysqli_connect($db_url, $db_user, $db_pwd, $db); 
$sql = "SELECT * FROM problems WHERE mrn=?"; 

$stmt = mysqli_prepare($con, $sql); 
mysqli_stmt_bind_param($stmt, 'i', $sent_mrn); 

這點我到最後一行出現。我錯過了真正明顯的東西嗎? SQL查詢中只有一個參數,我只綁定一個變量! (我知道有些人會建議我使用PDO,但我現在要使用mysqli)

+0

你在傳遞什麼'$ sent_mrn' – 2013-07-24 17:52:11

+0

正上方的第一行是$ sent_mrn = 123; – Amoeba

回答

0

當使用過程函數(而不是面向對象)時,必須先調用mysqli_stmt_init()來獲取語句對象。然後你用這個語句作爲第一個參數,而不是你現在正在做的連接調用mysqli_prepare。除非您仔細檢查錯誤情況,否則您不需要返回值mysqli_prepare。它的返回值不會傳遞到mysqli_stmt_bind_param,而是從mysqli_stmt_init()返回的語句。

+0

我從來沒有用過我的代碼之前使用mysqli_stmt_init(),它的工作 - 奇怪。 – Amoeba

0
$con = mysqli_connect($db_url, $db_user, $db_pwd, $db); 
$sql = "SELECT * FROM problems WHERE mrn=?"; 
$stmt = mysqli_prepare($con, $sql); 
$stmt -> bind_param('i', $sent_mrn); 

試試看。

相關問題