在非对象上调用成员函数prepare():PHP 帮助
问题:
尝试调用对象上的方法时,会出现错误“调用非对象上的成员函数prepare()”不存在的对象。
原因:
提供的代码片段将 $DBH 变量初始化为新的 MySQLi 连接对象,但无法将其作为参数传递或者在 selectInfo() 函数中将其声明为全局变量。因此,该函数无法访问该对象并引发错误。
解决方案:
要解决此问题,请考虑以下选项:
使用全局关键字:
function selectInfo($limit, $offset){ global $DBH; $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
将连接作为参数:
function selectInfo(MySQLi $DBH, $limit, $offset){ $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
创建获取数据库的函数连接:
function getDBH(){ static $DBH = null; if (is_null($DBH)) { $DBH = new mysqli(...); } return $DBH; }
function selectInfo($limit, $offset){
$DBH = getDBH(); $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
}
创建数据库包装器类:
class Database { private $conn; public function __construct(){ $this->conn = new mysqli(...); } public function selectInfo($limit, $offset){ $stmt = $this->conn->prepare("SELECT * FROM information LIMIT ?,?"); }
使用预构建的库或框架:
以上是为什么 PHP 中会出现'调用非对象上的成员函数prepare()”的情况,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!