鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ SQLite – PHP
SQLite Having 子句
SQLite 運(yùn)算符
SQLite 注入
SQLite Delete 語句
SQLite – Python
SQLite 數(shù)據(jù)類型
SQLite 簡(jiǎn)介
SQLite 創(chuàng)建數(shù)據(jù)庫(kù)
SQLite Vacuum
SQLite Group By
SQLite 日期 & 時(shí)間
SQLite AND/OR 運(yùn)算符
SQLite 刪除表
SQLite Distinct
SQLite Alter 命令
SQLite PRAGMA
SQLite 約束
SQLite 創(chuàng)建表
SQLite Like 子句
SQLite Limit 子句
SQLite Autoincrement
SQLite 子查詢
SQLite – C/C++
SQLite – PHP
SQLite 命令
SQLite Order By
SQLite Select 語句
SQLite Unions 子句
SQLite – Perl
SQLite – Java
SQLite 別名
SQLite 常用函數(shù)
SQLite Explain(解釋)
SQLite NULL 值
SQLite Glob 子句
SQLite 表達(dá)式
SQLite 視圖
SQLite Where 子句
SQLite Truncate Table
SQLite 索引
SQLite Insert 語句
SQLite 安裝
SQLite Indexed By
SQLite 分離數(shù)據(jù)庫(kù)
SQLite 觸發(fā)器
SQLite 語法
SQLite Joins
SQLite Update 語句
SQLite 附加數(shù)據(jù)庫(kù)
SQLite 事務(wù)

SQLite – PHP

安裝

自 PHP 5.3.0 起默認(rèn)啟用 SQLite3 擴(kuò)展??梢栽诰幾g時(shí)使用 --without-sqlite3 禁用 SQLite3 擴(kuò)展。

Windows 用戶必須啟用 php_sqlite3.dll 才能使用該擴(kuò)展。自 PHP 5.3.0 起,這個(gè) DLL 被包含在 PHP 的 Windows 分發(fā)版中。

如需了解詳細(xì)的安裝指導(dǎo),建議查看我們的 PHP 教程和它的官方網(wǎng)站。

PHP 接口 API

以下是重要的 PHP 程序,可以滿足您在 PHP 程序中使用 SQLite 數(shù)據(jù)庫(kù)的需求。如果您需要了解更多細(xì)節(jié),請(qǐng)查看 PHP 官方文檔。

序號(hào)API & 描述
1public void SQLite3::open ( filename, flags, encryption_key )

打開一個(gè) SQLite 3 數(shù)據(jù)庫(kù)。如果構(gòu)建包括加密,那么它將嘗試使用的密鑰。

如果文件名 filename 賦值為 ':memory:',那么 SQLite3::open() 將會(huì)在 RAM 中創(chuàng)建一個(gè)內(nèi)存數(shù)據(jù)庫(kù),這只會(huì)在 session 的有效時(shí)間內(nèi)持續(xù)。

如果文件名 filename 為實(shí)際的設(shè)備文件名稱,那么 SQLite3::open() 將使用這個(gè)參數(shù)值嘗試打開數(shù)據(jù)庫(kù)文件。如果該名稱的文件不存在,那么將創(chuàng)建一個(gè)新的命名為該名稱的數(shù)據(jù)庫(kù)文件。

可選的 flags 用于判斷是否打開 SQLite 數(shù)據(jù)庫(kù)。默認(rèn)情況下,當(dāng)使用 SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE 時(shí)打開。

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

該例程提供了一個(gè)執(zhí)行 SQL 命令的快捷方式,SQL 命令由 sql 參數(shù)提供,可以由多個(gè) SQL 命令組成。該程序用于對(duì)給定的數(shù)據(jù)庫(kù)執(zhí)行一個(gè)無結(jié)果的查詢。

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

該例程執(zhí)行一個(gè) SQL 查詢,如果查詢到返回結(jié)果則返回一個(gè) SQLite3Result 對(duì)象。

4public int SQLite3::lastErrorCode ( void )

該例程返回最近一次失敗的 SQLite 請(qǐng)求的數(shù)值結(jié)果代碼。

5public string SQLite3::lastErrorMsg ( void )

該例程返回最近一次失敗的 SQLite 請(qǐng)求的英語文本描述。

6public int SQLite3::changes ( void )

該例程返回最近一次的 SQL 語句更新或插入或刪除的數(shù)據(jù)庫(kù)行數(shù)。

7public bool SQLite3::close ( void )

該例程關(guān)閉之前調(diào)用 SQLite3::open() 打開的數(shù)據(jù)庫(kù)連接。

8public string SQLite3::escapeString ( string $value )

該例程返回一個(gè)字符串,在 SQL 語句中,出于安全考慮,該字符串已被正確地轉(zhuǎn)義。

連接數(shù)據(jù)庫(kù)

下面的 PHP 代碼顯示了如何連接到一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)。如果數(shù)據(jù)庫(kù)不存在,那么它就會(huì)被創(chuàng)建,最后將返回一個(gè)數(shù)據(jù)庫(kù)對(duì)象。

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
?>

現(xiàn)在,讓我們來運(yùn)行上面的程序,在當(dāng)前目錄中創(chuàng)建我們的數(shù)據(jù)庫(kù) test.db。您可以根據(jù)需要改變路徑。如果數(shù)據(jù)庫(kù)成功創(chuàng)建,那么會(huì)顯示下面所示的消息:

    Open database successfully

創(chuàng)建表

下面的 PHP 代碼段將用于在先前創(chuàng)建的數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)表:

  <?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      CREATE TABLE COMPANY
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Table created successfully\n";
   }
   $db->close();
?>

上述程序執(zhí)行時(shí),它會(huì)在 test.db 中創(chuàng)建 COMPANY 表,并顯示下面所示的消息:

    Opened database successfully
    Table created successfully

INSERT 操作

下面的 PHP 程序顯示了如何在上面創(chuàng)建的 COMPANY 表中創(chuàng)建記錄:

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Paul', 32, 'California', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
EOF;

   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Records created successfully\n";
   }
   $db->close();
?>

上述程序執(zhí)行時(shí),它會(huì)在 COMPANY 表中創(chuàng)建給定記錄,并會(huì)顯示以下兩行:

    Opened database successfully
    Records created successfully

SELECT 操作

下面的 PHP 程序顯示了如何從前面創(chuàng)建的 COMPANY 表中獲取并顯示記錄:

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;

   $ret = $db->query($sql);
   while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
      echo "ID = ". $row['ID'] . "\n";
      echo "NAME = ". $row['NAME'] ."\n";
      echo "ADDRESS = ". $row['ADDRESS'] ."\n";
      echo "SALARY =  ".$row['SALARY'] ."\n\n";
   }
   echo "Operation done successfully\n";
   $db->close();
?>

上述程序執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:

    Opened database successfully
    ID = 1
    NAME = Paul
    ADDRESS = California
    SALARY =  20000

    ID = 2
    NAME = Allen
    ADDRESS = Texas
    SALARY =  15000

    ID = 3
    NAME = Teddy
    ADDRESS = Norway
    SALARY =  20000

    ID = 4
    NAME = Mark
    ADDRESS = Rich-Mond
    SALARY =  65000

    Operation done successfully

UPDATE 操作

下面的 PHP 代碼顯示了如何使用 UPDATE 語句來更新任何記錄,然后從 COMPANY 表中獲取并顯示更新的記錄:

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
   $sql =<<<EOF
      UPDATE COMPANY set SALARY = 25000.00 where ID=1;
EOF;
   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo $db->changes(), " Record updated successfully\n";
   }

   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;
   $ret = $db->query($sql);
   while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
      echo "ID = ". $row['ID'] . "\n";
      echo "NAME = ". $row['NAME'] ."\n";
      echo "ADDRESS = ". $row['ADDRESS'] ."\n";
      echo "SALARY =  ".$row['SALARY'] ."\n\n";
   }
   echo "Operation done successfully\n";
   $db->close();
?>

上述程序執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:

    Opened database successfully
    1 Record updated successfully
    ID = 1
    NAME = Paul
    ADDRESS = California
    SALARY =  25000

    ID = 2
    NAME = Allen
    ADDRESS = Texas
    SALARY =  15000

    ID = 3
    NAME = Teddy
    ADDRESS = Norway
    SALARY =  20000

    ID = 4
    NAME = Mark
    ADDRESS = Rich-Mond
    SALARY =  65000

    Operation done successfully

DELETE 操作

下面的 PHP 代碼顯示了如何使用 DELETE 語句刪除任何記錄,然后從 COMPANY 表中獲取并顯示剩余的記錄:

  <?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
   $sql =<<<EOF
      DELETE from COMPANY where ID=2;
EOF;
   $ret = $db->exec($sql);
   if(!$ret){
     echo $db->lastErrorMsg();
   } else {
      echo $db->changes(), " Record deleted successfully\n";
   }

   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;
   $ret = $db->query($sql);
   while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
      echo "ID = ". $row['ID'] . "\n";
      echo "NAME = ". $row['NAME'] ."\n";
      echo "ADDRESS = ". $row['ADDRESS'] ."\n";
      echo "SALARY =  ".$row['SALARY'] ."\n\n";
   }
   echo "Operation done successfully\n";
   $db->close();
?>

上述程序執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:

    Opened database successfully
    1 Record deleted successfully
    ID = 1
    NAME = Paul
    ADDRESS = California
    SALARY =  25000

    ID = 3
    NAME = Teddy
    ADDRESS = Norway
    SALARY =  20000

    ID = 4
    NAME = Mark
    ADDRESS = Rich-Mond
    SALARY =  65000

    Operation done successfully