PHP Velho Oeste 2024

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()

add a note add a note

User Contributed Notes 3 notes

up
4
Anonymous
17 years ago
the above example dows not! work since sqlite_query() does not accept one argument, but only 2.

so correct is:

<?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);
}
?>
up
0
Phillip Berndt
17 years ago
If you miss to set the permissions mentioned by ivoras Sqlite will drop an error message saying "Malformed database scheme", which is somehow misleading.

(I mentioned this as some [I did] might search php.net for this error message)
up
-8
Simon
7 years ago
If you are using PHP7 or up, use PDO instead. this seems to be outdated since newer than 5.4
To Top