Debian(Ubuntu) で PHP をインストールしてもデフォルトでSQLiteは動作しない
ご利用のブラウザは、JavaScript が無効 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
Debian(Ubuntu) でもRedHat系と同じようにバイナリパッケージをインストールできます。
そこで、PHPのバイナリパッケージをインストールしてもRedHat系と同じような環境とは限らないということに注意する必要があります。
あくまで、そのディストリビューションにあったバイナリパッケージを提供しているに過ぎませんから、
ディストリビューションが異なれば、当然、バイナリパッケージも異なるわけで、動作環境も同じとは限りません。
今回、紹介するSQLiteにおいては、PHP経由でデータベースを操作することがあります。
RedHat系では、PHPをインストールすれば、もれなく動作してくれたはず?なんですが、Debian系では、もれなく動作してくれません。
そこで今回は、Debian系で、SQLiteをPHP経由で操作する手順を簡単に解説してみます。
PHP経由でSQLiteを操作する
Debian (Ubuntu 12) で Dotdeb から最新のPHP , MySQL をインストールする では、最新のPHPをインストールしました。また、最新でなくても同様に apt-get で簡単にPHPをインストールすることはできます。
以降に、PHPのSQLiteパッケージのインストールから、簡単な操作までを解説してみます。
PHPのSQLiteパッケージのインストールする
Debian系では、SQLiteを使う場合、明示的にPHPのSQLiteをインストールしないと動作しません。
つまり、以下のPHPのSQLite関連パッケージをインストールしなければSQLiteの操作ができません。
$ apt-get - y install php5- sqlite
これだけです。
また、Debian系は、SQLiteのコマンドもインストールされていない可能性もあります。
$ dpkg - l sqlite3
sqlite3 に一致するパッケージが見つかりません。
上記のようにインストールされていない場合は、以下のようにインストールできます。
$ apt-get - y install sqlite3
sqlite,sqlite3 の違いは、バージョンの違いで、
sqlite は、バージョン2 までのSQLiteのデータベースを
sqlite3 は、バージョン3 以降のSQLiteのデータベースを
操作することができます。
ここでは、sqlite3 を扱います。
PHP経由でSQLiteを操作する
PHP経由でSQLiteを操作するための環境は整ったはずですので、実際に操作してみましょう。
SQLite3 のデータベースを作成する
動作確認のためのSQLite3 のデータベースを作成します。
まず、以下のようなSQLファイル( ここでは、test_sqlite.sql として) を作成し、テスト用のテーブルを作成してみます。
DROP TABLE IF EXISTS `hoge_ test` ;
CREATE TABLE `hoge_ test` (
`id` int ( 10 ) NOT NULL ,
`name` text ,
PRIMARY KEY ( `id` )
) ;
INSERT INTO `hoge_ test` VALUES ( 0 , 'test0' ) ;
INSERT INTO `hoge_ test` VALUES ( 1 , 'test1' ) ;
INSERT INTO `hoge_ test` VALUES ( 2 , 'test2' ) ;
INSERT INTO `hoge_ test` VALUES ( 3 , 'test3' ) ;
INSERT INTO `hoge_ test` VALUES ( 4 , 'test4' ) ;
INSERT INTO `hoge_ test` VALUES ( 5 , 'test5' ) ;
ファイルを作成したら、先にインストールしたSQLite3 コマンドで テスト用のテーブルを作成します。
$ sqlite3 hogedb < test_sqlite. sql
これで、特にエラーが発生しなかったらOKです。
PHPでテスト用のテーブルを読み込でみる
以下のようなphpファイル( ここでは、test_sqlite.php として) を作成し、先に作成したテスト用のテーブル( hoge_test ) をPHP経由で読み込んでみます。
<?php
$dbname = 'hogedb' ; // データベースファイル名
$db = new SQLite3( $dbname ) ;
$result = $db -> query ( 'SELECT id, name from hoge_test' ) ;
$row_count = 1 ;
while ( $row = $result -> fetchArray ( ) ) {
echo "-- $row_count 行目 --\n " ;
print_r ( $row [ 'id' ] ) ;
echo "\t " ;
print_r ( $row [ 'name' ] ) ;
echo "\n " ;
$row_count ++;
}
$db -> close ( ) ;
?>
phpファイルを作成したら、実行してみましょう。
$ php test_sqlite. php
-- 1 行目 --
0 test0
-- 2 行目 --
1 test1
-- 3 行目 --
2 test2
-- 4 行目 --
3 test3
-- 5 行目 --
4 test4
-- 6 行目 --
5 test5
参考までに、PDOを使ったMySQLへのアクセスは、以下のような感じになります。
これを実行しても同様の結果を得るはずです。
<?php
$dbname = 'hogedb' ; // データベースファイル名
try {
$pdo = new PDO( "sqlite:$dbname " ) ;
echo "接続に成功しました\n " ;
$stmt = $pdo -> query ( 'SELECT id, name from hoge_test' ) ;
echo "テーブル出力を開始します\n " ;
$row_count = 1 ;
while ( $row = $stmt -> fetch ( PDO:: FETCH_ASSOC ) ) {
echo "-- $row_count 行目 --\n " ;
print_r ( $row [ 'id' ] ) ;
echo "\t " ;
print_r ( $row [ 'name' ] ) ;
echo "\n " ;
$row_count ++;
}
} catch ( PDOException $e ) {
echo "失敗しました\n " ;
var_dump ( $e -> getMessage ( ) ) ;
}
$pdo = null ;
?>
どうでしょう、うまく、出力できましたでしょうか。
SQLiteは、データベースを1つのファイルとして扱うことができて、小さなデータベースを扱う分には、非常に重宝します。
扱ったことがない方は、一度、お試しあれ。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
関連記事 :
コメントを投稿 :