首页 > 后端开发 > php教程 > 为什么 mysqli_stmt::bind_param() 抛出'参数...预期为引用,给定值”?

为什么 mysqli_stmt::bind_param() 抛出'参数...预期为引用,给定值”?

Susan Sarandon
发布: 2024-12-05 09:11:15
原创
668 人浏览过

Why Does mysqli_stmt::bind_param() Throw

mysqli bind_param() 错误:传递值而不是引用

错误“mysqli_stmt::bind_param() 的参数 3 预期为当 mysqli_stmt::bind_param() 传递一个引用,给定值时出现值的数组,而不是对这些值的引用的数组。

PDO 代码

在提供的 PDO 代码中:

$params = array(1,"2","3","4");
登录后复制

$params 数组包含值而不是对这些值的引用。要解决此问题,请使用 & 创建引用:

$params = array(1,&"2", &"3", &"4");
登录后复制

OOP 代码

类似地,在 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 )

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板