首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php PDO prepare()处理非对象错误

php PDO prepare()处理非对象错误
EN

Stack Overflow用户
提问于 2012-10-22 10:43:11
回答 1查看 432关注 0票数 1

我一直收到“致命错误:对/var/www/html/portal_core/build_portal.php中非对象上的成员函数准备()的调用”。我是PDO的新手,我真的把它当做一个测试来理解它。你们能帮我弄清楚我做错了什么吗?

代码语言:javascript
复制
 <?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);
    }
}

} ?>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-22 10:45:33

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

代码语言:javascript
复制
$this->dbh = new PDO('mysql:dbname='.$dbname.';host=localhost',"username","password");
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13004384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档