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

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

Linda Hamilton
Linda Hamilton原创
2024-12-21 15:04:14469浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn