gpt4 book ai didi

php PDO prepare() 非对象错误

转载 作者:行者123 更新时间:2023-11-29 06:55:27 24 4
gpt4 key购买 nike

我不断收到“ fatal error :在第 30 行的/var/www/html/portal_core/build_portal.php 中的非对象上调用成员函数 prepare()”。我是 PDO 的新手,我真的用它作为测试来了解它。你们能帮我理解我做错了什么吗?

 <?php

class build_portal
{
protected $dbh;

function __construct($dbname,$theme)
{
try
{
$dbh = new PDO('mysql:dbname='.$dbname.';host=localhost',"username","password");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->log_error("Construct 1st Try statement 3rd Line");
}
catch (PDOException $e)
{
echo "Page Could Not Be Loaded";
return -1;
}



}

function log_error($cause)
{
try
{
$sth = $this->dbh->prepare("SELECT * from portal_errors");
$sth->setFetchMode(PDO::FETCH_ASSOC);
$sth->execute();
}
catch (PDOException $e)
{
print_r($e->errorInfo);
}
}

}?>

最佳答案

这看起来是一个范围问题。您应该在构造函数中将 dbh 分配给 $this->dbh 。当您稍后在 log_error() 中访问它时,您希望它是一个类属性,但它最初在构造函数中被定义为局部变量。

$this->dbh = new PDO('mysql:dbname='.$dbname.';host=localhost',"username","password");
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

关于php PDO prepare() 非对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13004384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com