2013-07-24 66 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); 

试试看。

相关问题