2012年1月28日土曜日

Ubuntu 11.10 で PHPからSQLite3を試してみる

最近寒いですね
そんなときはヒトカラしてカラオケルームに引きこもります。
もしくは家に引きこもってコーディングします。
というコトで、PHPからSQLite3 を試してみました。

(SQLiteについてはsqlite3の基本操作まとめ [PCメモ] | てりぶろさんのブログが詳しいです(手抜き))

PHPのバージョンはPHP 5.3.6-13です。

で、インストールにちょっと詰りどころがあったのでメモとして残します。

このエントリの目次
1.パッケージ類のインストール
2.適当なディレクトリにDBを作成してみる
3.適当にコード書いてDBに接続を試みる
4.エラーの解決を試みる(これでいいのかは不明)
5.適当なテーブルを作成しデータ突っ込む
6.PHPからSELECT文を実行してみる
7.最後に

1.パッケージ類のインストール
下記のコマンドで必要なパッケージをインストールします。
sudo apt-get install sqlite3
sudo apt-get install php5-sqlite

2.適当なディレクトリにDBを作成してみる
コマンドラインで下記を入力します。
sqlite3 testdb

すると、「testdb」という名前のDBができ、かつSQLiteとの対話モードに入ります。
.quitと入力してとりあえず脱出。
sqlite> .quit

3.適当にコード書いてDBに接続を試みる
下記のようなPHPを書いてindex.phpという名前で保存します。
<?php
try {
    //下記はPDO('sqlite:<作成したSQLiteのDBのファイルパス>');です
    $db = new PDO('sqlite:testdb');
} catch (Exception $e) {
    error_log(print_r($e, true));
}

コマンドラインから実行してみます。
$ php index.php

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/sqlite.so' - /usr/lib/php5/20090626+lfs/sqlite.so: cannot open shared object file: No such file or directory in Unknown on line 0

エラー出た!

4.エラーの解決を試みる(これでいいのかは不明)
ヤフったら、Launchpadで同様の問題が書かれているページを発見。
読み進めていると、15番目のコメントに書かれてる手順で解決する様子。

同様の手順を実施してみる。
$ cd /etc/php5/conf.d/
$ sudo mv sqlite.ini sqlite.NOTini

で、もう一度コマンドラインから実行してみると、エラーが出なくなった!
$ php index.php

やったね!

ちなみに、10番目のコメントでは別の解決策が示されています。
ですが、僕が実施した15番目のコメントの方法を示した人が、14番目のコメントにて、
「それはまた別の話だよ (Your workaround is regarding a different issue.)」
と言っているので、この人を信じました(楽な方法だし)。

5.適当なテーブルを作成しデータ突っ込む
という訳で、まずはコマンドラインでテーブルを作成します。
//先ほど作成したtestdbを使う
$ sqlite3 testdb

//対話モードになったので、テーブルを作成する。
sqlite> create table testtable (id integer primary key);
//適当なデータを突っ込む
sqlite> insert into testtable values(1000);
//対話モードから脱出
sqlite> .quit

6.PHPからSELECT文を実行してみる
で、下記のようなPHPコードを書きます。
<?php

try {
    $db = new PDO('sqlite:testdb');
    $sql  = $db->prepare('select * from testtable');
    if (! $sql->execute()) {
        echo 'failed 1';
    }
    echo print_r($sql->fetchALl(), true);
} catch (Exception $e) {
    echo (print_r($e, true));
}

で、実行。
$ php index.php
Array
(
[0] => Array
(
[id] => 1000
[0] => 1000
)

)

問題なく値が取れています!

7.最後に
英語力をもっとつけなければいけないなと思いました。
最初にエラーに遭遇したとき、日本語のブログを見ていました。

が、話題が本件とずれていたり解決していなかったりして、調べる→実行する→違うエラー出る→調べる→実行する→(ryを繰り返し、どんどんおかしな方向に進んでいってました。

ですが、やる気出して英語記事を読んだらすんなり解決しました。
実はLaunchpadを見ると解決するコトが多いのでは?なんて思いました。
(見たのは今回初めてなんですが)

あと、そろそろSyntaxHighlighter入れようかな…。

それでは。

0 件のコメント:

コメントを投稿


Related Posts Plugin for WordPress, Blogger...