我错过了使用PHP的PDO的一些内容吗?

时间:2011-05-18 02:14:48

标签: php database pdo

这是我正在编写的一段简单的代码:

class LessonsLearntServiceTyped
{
    private $username = "***********";
    private $password = "***********";
    private $dsn      = "mysql:dbname=lessonslearnt;host=****
******.db.******.hostedresource.com";
    private $dbh;


    public function __construct(){
        try{
            $dbh = new PDO($this->dsn, $this->username, $this->password);

        }catch(PDOException $e){
            echo "Connection failed: ".$e->getMessage();
        }
    }



     public function returnAllEntries(){
        $query = "select * from lessons_learnt order by id";

    }

}

行。我以前没有太多PDO的经验,但是我在网上看到了一些例子,显然你不能序列化或反序列化一个PDO对象。(这是我尝试设置一个PDO对象时得到的错误信息到一个实例变量,以便我以后可以使用它)

那么,如果我们不能将PDO对象作为实例变量,那么我将如何继续编写returnAllEntries()方法?我是否必须再次创建PDO对象,以便我可以在那里使用它?(还有一个新的PDO对象,用于我写的每个函数处理数据库)?

我在这里缺少什么?

提前谢谢大家

修改

$this->dbh = new PDO($this->dsn, $this->username, $this->password);是我想要做的。

但是当我这样做时,我收到以下错误消息: note 此错误消息来自PHPUnit控制台的 我正在使用来测试这个类。在浏览器中,它不会显示任何错误。

“”您无法序列化或反序列化PDO实例“

2 个答案:

答案 0 :(得分:1)

看起来这是一个非常非常奇怪的边缘情况,除了阅读这个例外:

http://fabien.potencier.org/article/9/php-serialization-stack-traces-and-exceptions

尝试取出catch语句中的$e->getMessage()行位,看看它是否有任何改变。

答案 1 :(得分:0)

我认为问题出在我的PHPUnit测试运行器实例上。