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