您的PHP代码触发一条错误消息,指示您正在尝试访问prepare()方法一个不存在的物体。让我们深入研究提供的代码来识别此错误的来源:
$DBH = new mysqli("host", "test", "123456", "dbname"); function selectInfo($limit, $offset) { $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?"); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); } selectInfo();
错误源于 $DBH 变量的范围。在 selectInfo() 函数中,您尝试访问 $DBH 而不指定其范围。由于 $DBH 未在函数内定义,因此无法直接访问它。
要解决此问题,您有多种选择:
1。使用全局关键字:
function selectInfo($limit, $offset) { global $DBH; $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?"); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); }
2.将 $DBH 作为函数参数传递:
function selectInfo($DBH, $limit, $offset) { $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?"); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); }
3.创建一个函数来检索 $DBH:
function getDBH() { static $DBH = null; if (is_null($DBH)) { $DBH = new mysqli("host", "test", "123456", "dbname"); } return $DBH; } function selectInfo($limit, $offset) { $DBH = getDBH(); $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?"); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); }
通过实现这些选项之一,您将在 selectInfo() 函数中为 $DBH 建立正确的范围,从而允许它访问必要的数据库连接。
以上是为什么我的 PHP 代码会抛出'在非对象上调用成员函数准备()”错误,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!