我一直收到“致命错误:对/var/www/html/portal_core/build_portal.php中非对象上的成员函数准备()的调用”。我是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);
}
}} ?>
发布于 2012-10-22 10:45:33
这看起来是一个范围问题。你应该在构造函数中将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);https://stackoverflow.com/questions/13004384
复制相似问题