- 2005-10-04 (火)
先日、PHP5.1のRC1がリリースされたが、PHP5.1からはデフォルトでネイティブのデータベース抽象クラスであるPDO(PHP Data Objects)が使用できるようになる。PHP5.0.x でもwww.php.netのサイトからPECLのモジュールを取ってきてインストールすれば使える。ということで早めに慣れようと自分のマシンにインストールしてみて使ってみた。
今までMySQLを使用することが多かったため、自然とMySQL用の関数を使用することが多かったが、MySQL用の関数とPDOの使い勝手も多少異なるみたいだ。まあ、PDOはクラスなので当然であるが。PDOではMySQL用の関数と違って、PDO::prepare() でSQLを一度準備して、PDOStatement クラスのインスタンスを作成し、その後 PDOStatement::execute() を呼び出してSQL文を実行するプロセスを取る。
もちろん、PDO::query() で一気にSQL文を実行することも可能だが、文字列のquoteの関係上、prepare()後、execute()するのがお勧めらしい。つまり、query() を使用するとSQLインジェクションに注意しないといけない。それに対して、prepare()後、exeucte()するのであればSQLインジェクション対策を自動的にしてくれる。そのかわりスクリプトの行数が増えてしまう。といった感じであろうか。
確かに、今まで mysql_real_escape_string() をよく呼び出していたものだが、多少行数が増えても安全な方がよいかも。
- Newer: ActiveRecord
- Older: MT3.2へバージョンアップ