从db类访问PDO的execute()

时间:2012-11-10 15:05:43

标签: php class pdo

如何从db类中访问PDO的execute()方法?以下是我的班级和方法的片段:

class db extends PDO {
        public $memcache;

        function execute($params='') {
            try {$foo=parent::execute($params);}
            catch (PDOException $e) {echo $e->getMessage();}
            return $foo;
        }

        function __construct($db='server_en',$host='localhost',$uz='root',$pw='') {
            try {
                parent::__construct("mysql:dbname=$db;host=$host",$uz,$pw);
                parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
            }
            catch (PDOException $e) {echo $e->getMessage();}
            $this->memcache=new Memcache;
            $this->memcache->connect('127.0.0.1', 11211) or die('Could not connect to Memcache server');
        }
    }

我尝试执行以下代码:

var_dump($db->execute('INSERT INTO `foo`(`bar`) VALUES (0)'));

并收到以下错误:Fatal error: Call to undefined method PDO::execute() in ...

有人可以提供一个如何解决这个问题的简单示例吗?我对PDO和课程都缺乏经验,所以答案越简单越好。

P.S。当PDO过时时,我复制一些 PDO方法的原因是更容易迁移到新的数据库处理程序。这不是过早的优化;这从一开始就让生活更轻松。

2 个答案:

答案 0 :(得分:2)

PDO没有execute方法。它被称为execPDOStatement确实有execute方法,但您需要先创建这样的对象。

答案 1 :(得分:2)

您只能拨打::execute() on a PDOStatement,而不能拨打PDO。