sqlite_open

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_open SQLiteデータベースをオープンする。データベースが存在しない場合は作 成する

説明

sqlite_open ( string $filename [, int $mode = 0666 [, string &$error_message ]] ) : resource

オブジェクト指向型 (コンストラクタ):

final public SQLiteDatabase::__construct ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

SQLite データベースをオープン、 もしくは存在しない場合データベースを生成します。

パラメータ

filename

SQLite データベースのファイル名。もしこのファイルが存在しない場合、 SQLite はファイルを生成しようとします。 データを挿入したり、データベーススキーマを変更、 もしくはデータベースが存在しない場合にデータベースを生成する場合、 PHP はファイルに対する書き込み権限を持っている必要があります。

mode

ファイルのモード。読み込み専用モードでデータベースをオープンするために 使用することを目的としています。現在、このパラメータは SQLite ライブラリに無視されます。このモードのデフォルト値は、 8 進数値 0666 で、これは推奨される値です。

error_message

参照として渡され、エラーが発生した場合に データベースがオープンできなかった原因を説明する 記述的なエラーメッセージを保持するために設定されます。

返り値

成功時にリソース (データベースハンドル)、失敗時に FALSE を返します。

例1 sqlite_open() の例

<?php
if ($db sqlite_open('mysqlitedb'0666$sqliteerror)) {
    
sqlite_query($db'CREATE TABLE foo (bar varchar(10))');
    
sqlite_query($db"INSERT INTO foo VALUES ('fnord')");
    
$result sqlite_query($db'select bar from foo');
    
var_dump(sqlite_fetch_array($result));
} else {
    die(
$sqliteerror);
}
?>

注意

ヒント

Unix環境では、SQLiteはシステムコールfork()を使用するスクリプトの影 響を受け易いです。このようなスクリプトがある場合、 子プロセスを生成する前にハンドルを閉じ、子プロセスまたは親プロセス から再度オープンすることが推奨されます。 この問題に関する詳細な情報については、 マルチスレッドおよびSQLiteという名前のセクショ ンにある » SQLiteライブラリへのC言語インターフェイス を参照してください。

ヒント

NFSパーティションにマウントされたSQLiteデータベースを処理すること は推奨されません。ロックに関してNFSは著しい問題があるので、 データベースを全くオープンすることさえできない可能性があります。ま た、成功した場合でも、ロックに関する動作は予測できない結果を生む可 能性があります。

注意: SQLiteライブラリ バージョン2.8.2以降、 コンピュータのメモリ上にのみ存在するデータベースを作成するために filename:memory:を指定 することができます。 これは、メモリ上のデータベースは処理完了時に破棄されるため、 テンポラリな処理を行う場合には有用です。他のデータベースをロードし、 データを相互に移動したりクエリを実行したりするために ATTACH DATABASE SQLステートメントと組み合わせる 場合にも有用です。

注意: SQLite は セーフモード および open_basedir に対応しています。

参考

  • sqlite_popen() - SQLiteデータベースへの持続的ハンドルをオープンする。存在しない場合 には、データベースを作成する
  • sqlite_close() - オープンされたSQLiteデータベースを閉じる
  • sqlite_factory() - SQLite データベースをオープンし、SQLiteDatabse オブジェクトを返す