Latest web development tutorials

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 & 描述
1public 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 时打开。

2public bool SQLite3::exec ( string $query )

该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成。该程序用于对给定的数据库执行一个无结果的查询。

3public SQLite3Result SQLite3::query ( string $query )

该例程执行一个 SQL 查询,如果查询到返回结果则返回一个SQLite3Result对象。

4public int SQLite3::lastErrorCode ( void )

该例程返回最近一次失败的 SQLite 请求的数值结果代码。

5public string SQLite3::lastErrorMsg ( void )

该例程返回最近一次失败的 SQLite 请求的英语文本描述。

6public int SQLite3::changes ( void )

该例程返回最近一次的 SQL 语句更新或插入或删除的数据库行数。

7public bool SQLite3::close ( void )

该例程关闭之前调用 SQLite3::open() 打开的数据库连接。

8public 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

操作が正常に行われ