PHPからのモジュール呼び出し
php.iniの設定をしなくてもモジュールをPHPの実行毎に呼び出すことが出来ます。ただしセーフモードがオフでモジュールの外部呼出しが可能な様にphp.iniで設定されている必要があります。
以下はdl()関数のマニュアルにあるサンプルです。
/* sqliteモジュールがあるか判定 */ if (!extension_loaded('sqlite')) { /* OS毎に読み込み方を変更 */ if (strtoupper(substr(PHP_OS, 0,3) == 'WIN')) { dl($dir.'/php_sqlite.dll'); } else { dl('sqlite.so'); } } /* 外部モジュールの拡張子からモジュールファイルを判定 */ // PHP_SHLIB_SUFFIXはOSの定義済み定数 if (!extension_loaded('sqlite')) { $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX); }
SQLiteデータベースに接続
PEARのDBクラスを利用してSQLiteのデータベースへ接続します。注意する点はデータソース名の設定です。
以下は一般的なデータソース名です。
$dns = "phptype://username:password@hostspec/database"
以下はSQLiteのデータソース名です。
$dns = "sqlite:///データベースファイル名"
SQLiteのデータソース名で定義できる種類は以下の3つです。
phptype データベースバックエンド
database データベースファイル名
mode ファイルへのアクセス権限
database データベースファイル名
mode ファイルへのアクセス権限
require_once("DB.php"); /* データソース名の設定 */ // 文字列での場合アクセス権限が0644に設定される // $dsn = "sqlite:///test.db"; $dsn = array ( 'phptype' => "sqlite", // 使用するDB 'database' => "./test.db", // DBの保存先 'mode' => "0666" // アクセス権限 ); /* DBオブジェクトの生成と接続 */ $objdb = DB::connect($dsn); /* エラーチェック */ if (DB::isError($objdb)) { echo $objdb->getMessage(); exit('接続できません'); } $message = ""; /* テーブルの作成 */ $query = <<<QUERY CREATE TABLE account_tbl ( id INTEGER NOT NULL, name VARCHAR(64) NOT NULL, email VARCHAR(128), PRIMARY KEY (id) ); QUERY; /* クエリ実行 */ $result = $objdb->query($query); if (DB::isError($result)){ $message .= $result->getMessage()."n"; } /* 行の挿入 */ $query = "INSERT INTO account_tbl VALUES(1,'高橋','yujiro@rakuto.net') "; $result = $objdb->query($query); if (DB::isError($result)){ $message .= $result->getMessage(); } $message .= $objdb->affectedRows()."行を挿入しました。n"; /* データの取得 */ $query = "SELECT * FROM account_tbl"; $result = $objdb->getAll($query,DB_FETCHMODE_ASSOC); if (DB::isError($result)){ $message .= $result->getMessage()."n"; } /* 結果の出力 */ echo $message; foreach ($result as $row=> $cols){ echo "----------------------n"; echo "id = {$cols['id']}n"; echo "name = {$cols['name']}n"; echo "email = {$cols['email']}n"; echo "----------------------n"; } /* DBとの接続を終了 */ $objdb->disconnect();
実行結果
1行を挿入しました。----------------------
id = 1
name = 高橋
email = yujiro@rakuto.net
----------------------
