SQLiteは - PHP
インストール
PHP 5.3.0以来以降SQLite3の拡張機能はデフォルトで有効になっています。 あなたはコンパイル時に--without-sqlite3の SQLite3の延長使用を無効にすることができます。
Windowsユーザは、この拡張機能を使用するにはphp_sqlite3.dllを有効にする必要があります。 PHPは以降5.3.0以来、このDLLはWindowsのPHPディストリビューションに含まれています。
詳細なインストール手順については、私たちのPHPチュートリアルの勧告とその公式サイトを参照してください。
PHPインターフェースAPI
以下は、PHPプログラムでのSQLiteデータベースを使用して、あなたのニーズを満たすために重要なPHPプログラムです。 あなたはより多くの詳細が必要な場合は、PHPの公式マニュアルを参照してください。
序号 | API & 描述 |
---|---|
1 | public void SQLite3::open ( filename, flags, encryption_key ) 打开一个 SQLite 3 数据库。如果构建包括加密,那么它将尝试使用的密钥。 如果文件名filename赋值为':memory:',那么 SQLite3::open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。 如果文件名 filename 为实际的设备文件名称,那么 SQLite3::open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,那么将创建一个新的命名为该名称的数据库文件。 可选的 flags 用于判断是否打开 SQLite 数据库。默认情况下,当使用 SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE 时打开。 |
2 | public bool SQLite3::exec ( string $query ) 该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成。该程序用于对给定的数据库执行一个无结果的查询。 |
3 | public SQLite3Result SQLite3::query ( string $query ) 该例程执行一个 SQL 查询,如果查询到返回结果则返回一个SQLite3Result对象。 |
4 | public int SQLite3::lastErrorCode ( void ) 该例程返回最近一次失败的 SQLite 请求的数值结果代码。 |
5 | public string SQLite3::lastErrorMsg ( void ) 该例程返回最近一次失败的 SQLite 请求的英语文本描述。 |
6 | public int SQLite3::changes ( void ) 该例程返回最近一次的 SQL 语句更新或插入或删除的数据库行数。 |
7 | public bool SQLite3::close ( void ) 该例程关闭之前调用 SQLite3::open() 打开的数据库连接。 |
8 | public string SQLite3::escapeString ( string $value ) 该例程返回一个字符串,在 SQL 语句中,出于安全考虑,该字符串已被正确地转义。 |
データベースへの接続
次のPHPコードは、既存のデータベースに接続する方法を示しています。 データベースが存在しない場合、それが作成され、最終的に、データベース・オブジェクトを返します。
<?PHPの クラスMyDBとはSQLite3のを拡張します { 関数__construct() { の$ this - >オープン( 'test.dbという'); } } $ Dbを=新しいmydbという(); {(!$デシベル)の場合 エコー$ DB-> lastErrorMsg(); }エルス{ 「開かれたデータベースが正常に\ n "エコー; } ?>
それでは、現在のディレクトリにある当社のデータベースtest.dbというを作成し、上記のプログラムを実行してみましょう。 必要に応じてパスを変更することができます。 データベースが正常に作成されている場合は、以下に示すメッセージが表示されます。
データベースをオープンに成功
テーブルを作成します。
次のPHPコードスニペットは、以前に作成したデータベースにテーブルを作成するために使用されます。
<?PHPの クラスMyDBとはSQLite3のを拡張します { 関数__construct() { の$ this - >オープン( 'test.dbという'); } } $ Dbを=新しいmydbという(); {(!$デシベル)の場合 エコー$ DB-> lastErrorMsg(); }エルス{ 「開かれたデータベースが正常に\ n "エコー; } $のSql = <<< EOF 表会社を作成 (ID INT PRIMARY KEY NOT NULL、 名前テキスト、NOT NULL、 AGEのINT NOT NULLと、 ADDRESSのCHAR(50)、 SALARYのREAL); EOF; $のRet = $ DB->のexec($ sqlを); 場合(!$ retを){ エコー$ DB-> lastErrorMsg(); }エルス{ エコー "に成功した\ n作成した表」。 } $ DB->クローズ(); ?>
ときに上記の手順、それはtest.dbというにおけるCOMPANYテーブルを作成し、以下に示すメッセージが表示されます。
データベース正常にオープン 表作成に成功
INSERT操作
次のPHPプログラムは、上記で作成した会社のテーブルにレコードを作成する方法を示しています。
<?PHPの クラスMyDBとはSQLite3のを拡張します { 関数__construct() { の$ this - >オープン( 'test.dbという'); } } $ Dbを=新しいmydbという(); {(!$デシベル)の場合 エコー$ DB-> lastErrorMsg(); }エルス{ 「開かれたデータベースが正常に\ n "エコー; } $のSql = <<< EOF INSERT INTO COMPANY(ID、名前、年齢、住所、SALARY) VALUES(1、 'ポール'、32、 'カリフォルニア'、20000.00); INSERT INTO COMPANY(ID、名前、年齢、住所、SALARY) VALUES(2、 'アレン'、25、 'テキサス'、15000.00); INSERT INTO COMPANY(ID、名前、年齢、住所、SALARY) VALUES(3、 'テディ'、23、 'ノルウェー'、20000.00); INSERT INTO COMPANY(ID、名前、年齢、住所、SALARY) VALUES(4、 'マーク'、25、 'リッチモンド」、65000.00); EOF; $のRet = $ DB->のexec($ sqlを); 場合(!$ retを){ エコー$ DB-> lastErrorMsg(); }エルス{ 「N \正常に作成されたレコード "エコー; } $ DB->クローズ(); ?>
上記のプログラムが実行され、それが与えられたレコードの会社テーブルに作成され、次の2行が表示されます。
データベース正常にオープン 正常に作成されたレコード
SELECT操作
次のPHPプログラムは、以前に作成したCOMPANYテーブルから取得する方法を示していますし、レコードを表示します。
<?PHPの クラスMyDBとはSQLite3のを拡張します { 関数__construct() { の$ this - >オープン( 'test.dbという'); } } $ Dbを=新しいmydbという(); {(!$デシベル)の場合 エコー$ DB-> lastErrorMsg(); }エルス{ 「開かれたデータベースが正常に\ n "エコー; } $のSql = <<< EOF COMPANYからSELECT *; EOF; $のRet = $ DB->クエリ($ sqlを); しばらく($行= $ ret-> fetchArray(SQLITE3_ASSOC)){ 。エコー "ID =" $行[ 'ID'] "の\ n"; 。エコー "NAME =" $行[ 'NAME'] "の\ n"; 。エコー "ADDRESS =" $行[ 'ADDRESS'] "の\ n"; 。エコー "SALARY =" $行[ 'SALARY'] "の\ nを\ n"; } エコー「N \成功した操作 "; $ DB->クローズ(); ?>
上記のプログラムが実行されると、次の結果を生成します。
データベース正常にオープン ID = 1 NAME =ポール ADDRESS =カリフォルニア州 SALARY = 20000 ID = 2 NAME =アレン ADDRESS =テキサス州 SALARY = 15000 ID = 3 NAME =テディ ADDRESS =ノルウェー SALARY = 20000 ID = 4 NAME =マーク ADDRESS =リッチモンド SALARY = 65000 操作が正常に行われ
UPDATE操作
次のPHPコードCOMPANYテーブルから取得し、更新されたレコードを表示した後、任意のレコードを更新するUPDATEステートメントを使用する方法を示しています。
<?PHPの クラスMyDBとはSQLite3のを拡張します { 関数__construct() { の$ this - >オープン( 'test.dbという'); } } $ Dbを=新しいmydbという(); {(!$デシベル)の場合 エコー$ DB-> lastErrorMsg(); }エルス{ 「開かれたデータベースが正常に\ n "エコー; } $のSql = <<< EOF UPDATE会社は給与を設定= ID = 1 25000.00を。 EOF; $のRet = $ DB->のexec($ sqlを); 場合(!$ retを){ エコー$ DB-> lastErrorMsg(); }エルス{ エコー$ DB->()に変わり、「N \正常に更新記録」。 } $のSql = <<< EOF COMPANYからSELECT *; EOF; $のRet = $ DB->クエリ($ sqlを); しばらく($行= $ ret-> fetchArray(SQLITE3_ASSOC)){ 。エコー "ID =" $行[ 'ID'] "の\ n"; 。エコー "NAME =" $行[ 'NAME'] "の\ n"; 。エコー "ADDRESS =" $行[ 'ADDRESS'] "の\ n"; 。エコー "SALARY =" $行[ 'SALARY'] "の\ nを\ n"; } エコー「N \成功した操作 "; $ DB->クローズ(); ?>
上記のプログラムが実行されると、次の結果を生成します。
データベース正常にオープン 1レコードが正常に更新 ID = 1 NAME =ポール ADDRESS =カリフォルニア州 SALARY = 25000 ID = 2 NAME =アレン ADDRESS =テキサス州 SALARY = 15000 ID = 3 NAME =テディ ADDRESS =ノルウェー SALARY = 20000 ID = 4 NAME =マーク ADDRESS =リッチモンド SALARY = 65000 操作が正常に行われ
DELETE操作
次のPHPコードDELETEステートメントを使用する方法を示しレコードをすべて削除し、その後COMPANYテーブルから取り出され、残りの記録が表示されます。
<?PHPの クラスMyDBとはSQLite3のを拡張します { 関数__construct() { の$ this - >オープン( 'test.dbという'); } } $ Dbを=新しいmydbという(); {(!$デシベル)の場合 エコー$ DB-> lastErrorMsg(); }エルス{ 「開かれたデータベースが正常に\ n "エコー; } $のSql = <<< EOF ID = 2 COMPANYから削除します。 EOF; $のRet = $ DB->のexec($ sqlを); 場合(!$ retを){ エコー$ DB-> lastErrorMsg(); }エルス{ エコー$ DB->()に変わり、「レコードがn \正常に削除されました」。 } $のSql = <<< EOF COMPANYからSELECT *; EOF; $のRet = $ DB->クエリ($ sqlを); しばらく($行= $ ret-> fetchArray(SQLITE3_ASSOC)){ 。エコー "ID =" $行[ 'ID'] "の\ n"; 。エコー "NAME =" $行[ 'NAME'] "の\ n"; 。エコー "ADDRESS =" $行[ 'ADDRESS'] "の\ n"; 。エコー "SALARY =" $行[ 'SALARY'] "の\ nを\ n"; } エコー「N \成功した操作 "; $ DB->クローズ(); ?>
上記のプログラムが実行されると、次の結果を生成します。
データベース正常にオープン 1レコードが正常に削除されました ID = 1 NAME =ポール ADDRESS =カリフォルニア州 SALARY = 25000 ID = 3 NAME =テディ ADDRESS =ノルウェー SALARY = 20000 ID = 4 NAME =マーク ADDRESS =リッチモンド SALARY = 65000 操作が正常に行われ