0

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とクラスの両方にかなり不慣れなので、答えは単純な方が良いです。

PS PDOのメソッドの一部を複製する理由は、PDOが古くなったときに新しいdbハンドラーに簡単に移行できるようにするためです。これは時期尚早の最適化ではありません。これにより、最初から生活が楽になります。

4

2 に答える 2

2

PDOメソッドがありませんexecute。それはと呼ばれexecます。PDOStatementメソッドはexecuteありますが、最初にそのようなオブジェクトを作成する必要があります。

于 2012-11-10T15:09:54.720 に答える
2

PDO自体ではなく::execute()、PDOStatementのみを呼び出すことができます。

于 2012-11-10T15:10:02.740 に答える