PHP SQLite

PHP勉強し始めているのだけど。
DB操作のところで、mysql とか入れるの面倒だから SQLite にしようとしてはまった。ちなみに環境は、CentOS/5, php/5.1.6, sqlite/3.3.6 です。

最初、php-pear[-DB] パッケージ入れ忘れていたというのはまあともかくとしても。

これは…。sqlite3 で作ったデータベースファイルが読み込めなくてこれで半日くらいはまったぞ。しかもこれ、sqlite コマンドでDBファイルコマンドを作らずに、php 内で create database 実行させて生成して、ファイルの中身を見るとすぐわかったりしていままで何でそんな簡単なことをやらなかったのかと自己嫌悪。

<?php
require_once 'DB.php';

$dsn = array(
             "phptype" => 'sqlite',
             "database" => './foo.db',
             );

print_r(DB::parseDSN($dsn));
$db = DB::connect($dsn);
if(DB::isError($db)) {
  die("Cannot connect: " . $db->getMessage() . "\n");
}

$db->setErrorHandling(PEAR_ERROR_DIE);
if(DB::isError($db)) {
  die("Error: connect:");
}

$sql = "CREATE TABLE foo (" .
            "bar text," .
            "baz text"  .
         ")";

$q = $db->query($sql);
if(DB::isError($q)) {
  die ("Error : create table : " . $q);
}
?>

foo.db ファイルを生成する。

$ php foo.php
$ cat foo.db
** This file contains an SQLite 2.1 database **(u?????T;??;tablefoofoo3CREATE TABLE foo (bar text,baz text)

しっかり SQLite2.1 ってかいてやんの。

あーPDO使えって話なのな。手元の本が PEAR でやるように書いてあったからそれに固執しすぎたか…。2005年…。

初めてのPHP5

初めてのPHP5

Ref.

結局、rpmsearch で sqlite2 パッケージを落としてきて入れて使う。
いや、ちゃんと PDO の使い方覚えるべきか。もう疲れたな…。