首页 > 后端开发 > php教程 > 如何修复MySQLi中的'调用非对象上的成员函数bind_param()”和'mysqli_fetch_array():参数#1必须是mysqli_result类型”错误?

如何修复MySQLi中的'调用非对象上的成员函数bind_param()”和'mysqli_fetch_array():参数#1必须是mysqli_result类型”错误?

Linda Hamilton
发布: 2024-12-21 15:04:14
原创
376 人浏览过

How to Fix

MySQLi 错误传播:解决 mysqli_fetch_array() 和 Bind_param() 问题

问题:

类似“调用成员函数bind_param()”的错误在非对象上”和“mysqli_fetch_array():参数 #1 必须是 mysqli_result 类型”在某些环境中使用 MySQLi 时可能会出现。此问题通常源于 PHP 中缺少 MySQL 错误报告配置。

解决方法:

1.启用 MySQL 错误报告

首先在建立 MySQLi 连接之前添加以下行,在 PHP 中启用 MySQL 错误报告:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
登录后复制

此配置将确保任何 MySQL 错误都被作为 PHP 异常传播,使它们可见且可操作。

2.利用准备好的语句

将 SQL 查询中的任何显式 PHP 变量替换为问号,并使用准备好的语句执行查询。这种方法有助于防止语法错误和注入漏洞。

// Example using MySQLi prepared statements

$mysqli = new mysqli(...) or throw new Exception('Could not connect to DB');
$query = 'SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?';
$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);
登录后复制

其他提示

  • 确保启用错误输出,无论是在开发屏幕上服务器或通过实时服务器的错误日志。
  • 仔细检查错误消息并确定实际的错误消息问题。
  • 信任错误消息并假设它报告的错误是真实的。
  • 实施基本调试技术来验证代码执行并检查输入数据完整性。

以上是如何修复MySQLi中的'调用非对象上的成员函数bind_param()”和'mysqli_fetch_array():参数#1必须是mysqli_result类型”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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