1

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

4

2 回答 2

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);

试试这个。

于 2013-07-24T17:58:15.550 回答
0

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

于 2013-07-24T17:52:09.017 回答