如何将常量传递给mysqli预处理语句中的bind_param
。通过传递变量,以下工作正常:
$stmt->bind_param("i", $id);
但是如果我试图传递常数,它就不起作用。 例如:
$stmt->bind_param("i", ID);
给出以下错误:
Fatal error: Cannot pass parameter 2 by reference in...
由于
答案 0 :(得分:2)
在MySQLi中,类型字符串后面的参数是通过引用传递的,而不是通过值传递的。您可以通过引用传递的唯一内容是变量。使用变量的原因是你可以分配变量,执行语句,再次分配变量,再次执行语句等等。试试这个:
$id = ID;
$stmt->bind_param("i", $id);
或尝试使用PDO的MySQL驱动程序而不是MySQLi。 PDO允许您选择将值而不是变量绑定到查询参数。如果您计划只执行一次预准备语句,这将非常有用。