PHP:变量数与预准备语句中的参数数量不匹配

时间:2013-07-24 17:46:31

标签: php sql mysqli

我在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)

2 个答案:

答案 0 :(得分:0)

使用过程函数(而不是面向对象)时,必须先调用mysqli_stmt_init()来获取语句对象。然后使用此语句作为第一个参数调用mysqli_prepare,而不是您当前正在执行的连接。除非您仔细检查错误情况,否则您不需要mysqli_prepare的返回值。它的返回值不会传递给mysqli_stmt_bind_param,而是从mysqli_stmt_init()返回的语句。

答案 1 :(得分: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);

试一试。