mysqli bind_param() 错误:传递值而不是引用
错误“mysqli_stmt::bind_param() 的参数 3 预期为当 mysqli_stmt::bind_param() 传递一个引用,给定值时出现值的数组,而不是对这些值的引用的数组。
在提供的 PDO 代码中:
$params = array(1,"2","3","4");
$params 数组包含值而不是对这些值的引用。要解决此问题,请使用 & 创建引用:
$params = array(1,&"2", &"3", &"4");
类似地,在 OOP 代码中:
array_unshift($params, $param_type);
此行在 $param_type 字符串前面添加到 $params 数组的开头,但它不会创建对参数值的引用。要创建引用,请使用 & 字符:
array_unshift($params, $param_type); foreach ($params as $key => $value) { $params[$key] =& $value; }
在 PHP 版本 5.6 及更高版本中,您可以使用扩展运算符 (... )将 $params 数组作为单独的参数传递,而无需手动创建引用:
mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params); $insert_stmt->bind_param($param_type, ...$params);
通过传递引用或使用扩展运算符,您可以确保 mysqli_stmt::bind_param() 接收对参数值的引用数组,从而解决错误。
以上是为什么 mysqli_stmt::bind_param() 抛出'参数...预期为引用,给定值”?的详细内容。更多信息请关注PHP中文网其他相关文章!