【问题标题】:Accessing PDO's execute() from a db class从 db 类访问 PDO 的 execute()
【发布时间】:2012-11-10 15:05:42
【问题描述】:

如何从 db 类中访问 PDO 的 execute() 方法?下面是我的类和方法的 sn-p:

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 和类都相当缺乏经验,所以答案越简单越好。

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

【问题讨论】:

    标签: php class pdo


    【解决方案1】:

    您只能调用::execute() on a PDOStatement,而不是 PDO 本身。

    【讨论】:

    • 谢谢!这解释了很多:)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多