F.Ko-Jiの「一秒後は未来」

PDOでMTのSQLiteデータベースからデータを読み込む

うちのブログは2008年5月3日現在、以下の環境で稼働しています。

  • レンタルサーバ: XREA
  • Movable Type 3.36
  • データベース: SQLite

PHPからMTのデータベースを操作してみようとしたのですが、 sqlite_open でデータベースファイルを開こうとすると、

file is encrypted or is not a database

とかエラーが出て、どうもSQLiteのバージョンが合っていない模様。MTのデータベースは sqlite3 のもの、sqlite_open で使われているのは sqlite2 っぽい。

phpinfo() で調べてみると PDO(PHP Data Objects)が SQLite3 に対応しているようなのでPDOを使ってみることにしました。

このブログは blog_id=2 で、公開中のエントリーは entry_status=2 を持っているようなので、次のように書けば公開中の全エントリーを取得できます。

<?php
$dsn = 'sqlite:/path/to/sqlite/database.db';
$pdo = new PDO($dsn);
$sql = "SELECT * FROM mt_entry WHERE entry_blog_id=2
    AND entry_status=2 ORDER BY entry_created_on";
$entries = $pod->query($sql);
while ($entry = $entries->fetch()) {
    // 処理を書く
}
?>

これまでPDOの存在に気づかなかったのでMTのデータベース操作を敬遠していたのですが、うちの環境の場合はPDOを使えばさくっと色々できそうです。

【参考サイト】
SQLiteについてのメモ書き – nitsujiの日記
PHP: PDO – Manual

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など