我在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 :(得分: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);
试一试。