TShopping

 找回密碼
 註冊
搜索
查看: 269|回復: 0

[教學] PHP如何連接的SQLite數據庫

[複製鏈接]
發表於 2019-5-10 23:28:35 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk  
sqlite3的名擴展在PHP 5.3.0+以上都會默認啟用。在可以compile-時使用--without-sqlite3來禁用它。
視窗柯林斯用戶通過啟用php_sqlite3.dll才能使用此擴展。php_sqlite3.dll默認所有遊戲在PHP 5.3.0之後的PHP發行版中。
有關詳細的安裝說明,請查看PHP教程及其官方網站。
連接到的SQLite數據庫以下PHP代碼顯示如何連接到SQLite數據庫。如果數據庫不存在,那麼它將創建一個新的數據庫,最後將返回一個數據庫對象。
  1. <?php
  2.    class SQLiteDB extends SQLite3
  3.    {
  4.       function __construct()
  5.       {
  6.          $this->open('phpdb.db');
  7.       }
  8.    }
  9.    $db = new SQLiteDB();
  10.    if(!$db){
  11.       echo $db->lastErrorMsg();
  12.    } else {
  13.       echo "Yes, Opened database successfully\n";
  14.    }
  15. ?>
複製代碼

現在,運行上面的程序在當前目錄中創建指定數據庫:phpdb.db。可以根據需要更改路徑。如果數據庫成功創建,則會提供以下消息:

PHP SQLite 數據庫

PHP SQLite 數據庫

在執行上面語句後,應該也會在相同的目錄下自動創建一個名稱為:phpdb.db的數據庫文件。如下所示 -

PHP SQLite 數據庫

PHP SQLite 數據庫


創建表以下PHP程序將用於在上面創建的數據庫(phpdb.db)中創建一個表:
  1. <?php
  2. class SQLiteDB extends SQLite3
  3. {
  4.   function __construct()
  5.   {
  6.      $this->open('phpdb.db');
  7.   }
  8. }
  9. $db = new SQLiteDB();
  10. if(!$db){
  11.   echo $db->lastErrorMsg();
  12. } else {
  13.   echo "Yes, Opened database successfully<br/>\n";
  14. }

  15. $sql =<<<EOF
  16.       CREATE TABLE company
  17.       (ID INT PRIMARY KEY     NOT NULL,
  18.       NAME           TEXT    NOT NULL,
  19.       AGE            INT     NOT NULL,
  20.       ADDRESS        CHAR(50),
  21.       SALARY         REAL);
  22. EOF;

  23. $ret = $db->exec($sql);
  24. if(!$ret){
  25.   echo $db->lastErrorMsg();
  26. } else {
  27.   echo "Yes, Table created successfully<br/>\n";
  28. }
  29. $db->close();
複製代碼


當執行上述程序時,它將在數據庫(phpdb.db)中創建一個名稱為:company的表,並顯示以下消息:

PHP SQLite 數據庫

PHP SQLite 數據庫


插入數據操作以下PHP顯示程序如何了上述在示例中創建³³的company表中插入數據記錄:
  1. <?php
  2. class SQLiteDB extends SQLite3
  3. {
  4.   function __construct()
  5.   {
  6.      $this->open('phpdb.db');
  7.   }
  8. }
  9. $db = new SQLiteDB();
  10. if(!$db){
  11.   echo $db->lastErrorMsg();
  12. } else {
  13.   echo "Yes, Opened database successfully<br/>\n";
  14. }

  15. // 先删除后创建表
  16. $sql = "DROP table company";
  17. $ret = $db->exec($sql);

  18. // 创建表语句

  19. $sql =<<<EOF
  20.       CREATE TABLE if not exists company
  21.       (ID INT PRIMARY KEY     NOT NULL,
  22.       NAME           TEXT    NOT NULL,
  23.       AGE            INT     NOT NULL,
  24.       ADDRESS        CHAR(50),
  25.       SALARY         REAL);
  26. EOF;

  27. $ret = $db->exec($sql);
  28. if(!$ret){
  29.   echo $db->lastErrorMsg();
  30. } else {
  31.   echo "Yes, Table created successfully<br/>\n";
  32. }

  33. // $db->close();

  34. $sql =<<<EOF
  35.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  36.       VALUES (1, 'Maxsu', 26, 'Haikou', 20000.00 );

  37.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  38.       VALUES (2, 'Allen', 25, 'Guangzhou', 15000.00 );

  39.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  40.       VALUES (3, 'Tenny', 23, 'Shanghai', 20000.00 );

  41.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  42.       VALUES (4, 'Weiwang', 25, 'Beijing ', 65000.00 );
  43. EOF;

  44.    $ret = $db->exec($sql);
  45.    if(!$ret){
  46.       echo $db->lastErrorMsg();
  47.    } else {
  48.       echo "Yes, Some Records has Inserted successfully<br/>\n";
  49.    }
  50.    $db->close();

複製代碼


當執行上述程序時,將向company表中插入給定的記錄,並顯示如下:

PHP SQLite 數據庫

PHP SQLite 數據庫


選擇操作以下PHP顯示程序如何了上述從示例中創建³³的company表中並電子雜誌數據顯示記錄:
  1. <?php
  2. class SQLiteDB extends SQLite3
  3. {
  4.   function __construct()
  5.   {
  6.      $this->open('phpdb.db');
  7.   }
  8. }
  9. $db = new SQLiteDB();
  10. if(!$db){
  11.   echo $db->lastErrorMsg();
  12. } else {
  13.   echo "Yes, Opened database successfully<br/>\n";
  14. }

  15. // 先删除后创建表
  16. $sql = "DROP table company";
  17. $ret = $db->exec($sql);

  18. // 创建表

  19. $sql =<<<EOF
  20.       CREATE TABLE if not exists company
  21.       (ID INT PRIMARY KEY     NOT NULL,
  22.       NAME           TEXT    NOT NULL,
  23.       AGE            INT     NOT NULL,
  24.       ADDRESS        CHAR(50),
  25.       SALARY         REAL);
  26. EOF;

  27. $ret = $db->exec($sql);
  28. if(!$ret){
  29.   echo $db->lastErrorMsg();
  30. } else {
  31.   echo "Yes, Table created successfully<br/>\n";
  32. }

  33. // $db->close();

  34. $sql =<<<EOF
  35.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  36.       VALUES (1, 'Maxsu', 26, 'Haikou', 20000.00 );

  37.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  38.       VALUES (2, 'Allen', 25, 'Guangzhou', 15000.00 );

  39.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  40.       VALUES (3, 'Tenny', 23, 'Shanghai', 20000.00 );

  41.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  42.       VALUES (4, 'Weiwang', 25, 'Beijing ', 65000.00 );
  43. EOF;

  44. $ret = $db->exec($sql);
  45. if(!$ret){
  46.   echo $db->lastErrorMsg();
  47. } else {
  48.   echo "Yes, Some Records has Inserted successfully<br/>\n";
  49. }

  50. // 查询表中的数据

  51. echo "<b> Select Data from company table :</b><hr/>";

  52. $sql =<<<EOF
  53.   SELECT * from COMPANY;
  54. EOF;

  55. $ret = $db->query($sql);
  56. while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  57.   echo "ID = ". $row['ID'] . "<br/>\n";
  58.   echo "NAME = ". $row['NAME'] ."<br/>\n";
  59.   echo "ADDRESS = ". $row['ADDRESS'] ."<br/>\n";
  60.   echo "SALARY =  ".$row['SALARY'] ."<br/>\n\n";
  61.   echo '----------------------------------<br/>';
  62. }

  63. echo "Operation done successfully\n";

  64. $db->close();

複製代碼


執行上述程序時,會產生以下結果:

PHP SQLite 數據庫

PHP SQLite 數據庫


更新操作以下PHP顯示代碼如何了使用UPDATE語句來更新記錄,從然後company表中並電子雜誌更新顯示的記錄:
  1. <?php
  2. class SQLiteDB extends SQLite3
  3. {
  4.   function __construct()
  5.   {
  6.      $this->open('phpdb.db');
  7.   }
  8. }
  9. $db = new SQLiteDB();
  10. if(!$db){
  11.   echo $db->lastErrorMsg();
  12. } else {
  13.   echo "Yes, Opened database successfully<br/>\n";
  14. }

  15. // 先删除后创建表
  16. $sql = "DROP table company";
  17. $ret = $db->exec($sql);

  18. // 创建表

  19. $sql =<<<EOF
  20.       CREATE TABLE if not exists company
  21.       (ID INT PRIMARY KEY     NOT NULL,
  22.       NAME           TEXT    NOT NULL,
  23.       AGE            INT     NOT NULL,
  24.       ADDRESS        CHAR(50),
  25.       SALARY         REAL);
  26. EOF;

  27. $ret = $db->exec($sql);
  28. if(!$ret){
  29.   echo $db->lastErrorMsg();
  30. } else {
  31.   echo "Yes, Table created successfully<br/>\n";
  32. }

  33. // $db->close();

  34. $sql =<<<EOF
  35.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  36.       VALUES (1, 'Maxsu', 26, 'Haikou', 20000.00 );

  37.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  38.       VALUES (2, 'Allen', 25, 'Guangzhou', 15000.00 );

  39.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  40.       VALUES (3, 'Tenny', 23, 'Shanghai', 20000.00 );

  41.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  42.       VALUES (4, 'Weiwang', 25, 'Beijing ', 65000.00 );
  43. EOF;

  44. $ret = $db->exec($sql);
  45. if(!$ret){
  46.   echo $db->lastErrorMsg();
  47. } else {
  48.   echo "Yes, Some Records has Inserted successfully<br/>\n";
  49. }

  50. // 更新ID=1的薪水为:29999

  51. $sql = 'UPDATE COMPANY set SALARY = 29999.00 where ID=1';
  52. $ret = $db->exec($sql);
  53. if(!$ret){
  54.   echo $db->lastErrorMsg();
  55. } else {
  56.   echo $db->changes(), " Record(ID=1) updated successfully<br/>\n";
  57. }


  58. // 查询表中的数据

  59. echo "<b> Select Data from company table :</b><hr/>";

  60. $sql =<<<EOF
  61.   SELECT * from COMPANY;
  62. EOF;

  63. $ret = $db->query($sql);
  64. while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  65.   echo "ID = ". $row['ID'] . "<br/>\n";
  66.   echo "NAME = ". $row['NAME'] ."<br/>\n";
  67.   echo "ADDRESS = ". $row['ADDRESS'] ."<br/>\n";
  68.   echo "SALARY =  ".$row['SALARY'] ."<br/>\n\n";
  69.   echo '----------------------------------<br/>';
  70. }

  71. echo "Operation done successfully\n";

  72. $db->close();
複製代碼


執行上述程序時,會產生以下結果:

PHP SQLite 數據庫

PHP SQLite 數據庫


刪除操作以下PHP顯示代碼如何了使用DELETE語句刪除任何記錄,從然後company表中並電子雜誌剩餘顯示的記錄:
  1. <?php
  2. class SQLiteDB extends SQLite3
  3. {
  4.   function __construct()
  5.   {
  6.      $this->open('phpdb.db');
  7.   }
  8. }
  9. $db = new SQLiteDB();
  10. if(!$db){
  11.   echo $db->lastErrorMsg();
  12. } else {
  13.   echo "Yes, Opened database successfully<br/>\n";
  14. }

  15. // 先删除后创建表
  16. $sql = "DROP table company";
  17. $ret = $db->exec($sql);

  18. // 创建表

  19. $sql =<<<EOF
  20.       CREATE TABLE if not exists company
  21.       (ID INT PRIMARY KEY     NOT NULL,
  22.       NAME           TEXT    NOT NULL,
  23.       AGE            INT     NOT NULL,
  24.       ADDRESS        CHAR(50),
  25.       SALARY         REAL);
  26. EOF;

  27. $ret = $db->exec($sql);
  28. if(!$ret){
  29.   echo $db->lastErrorMsg();
  30. } else {
  31.   echo "Yes, Table created successfully<br/>\n";
  32. }

  33. // $db->close();

  34. $sql =<<<EOF
  35.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  36.       VALUES (1, 'Maxsu', 26, 'Haikou', 20000.00 );

  37.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  38.       VALUES (2, 'Allen', 25, 'Guangzhou', 15000.00 );

  39.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  40.       VALUES (3, 'Tenny', 23, 'Shanghai', 20000.00 );

  41.       INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
  42.       VALUES (4, 'Weiwang', 25, 'Beijing ', 65000.00 );
  43. EOF;

  44. $ret = $db->exec($sql);
  45. if(!$ret){
  46.   echo $db->lastErrorMsg();
  47. } else {
  48.   echo "Yes, Some Records has Inserted successfully<br/>\n";
  49. }

  50. // 更新ID小于等于2的数据记录

  51. $sql =<<<EOF
  52.   DELETE from COMPANY where ID<=2;
  53. EOF;
  54. $ret = $db->exec($sql);
  55. if(!$ret){
  56. echo $db->lastErrorMsg();
  57. } else {
  58.   echo $db->changes(), " Record(ID<=2) deleted successfully<br/>\n";
  59. }

  60. // 查询表中的数据

  61. echo "<b> Select Data from company table :</b><hr/>";

  62. $sql =<<<EOF
  63.   SELECT * from COMPANY;
  64. EOF;

  65. $ret = $db->query($sql);
  66. while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  67.   echo "ID = ". $row['ID'] . "<br/>\n";
  68.   echo "NAME = ". $row['NAME'] ."<br/>\n";
  69.   echo "ADDRESS = ". $row['ADDRESS'] ."<br/>\n";
  70.   echo "SALARY =  ".$row['SALARY'] ."<br/>\n\n";
  71.   echo '----------------------------------<br/>';
  72. }

  73. echo "Operation done successfully\n";

  74. $db->close();
複製代碼


執行上述程序時,會產生以下結果:

PHP SQLite 數據庫

PHP SQLite 數據庫


最後如要列出資料庫內有多少Table name
  1. <?php
  2.     $db = new SQLite3('db/chinhook.db');
  3.     $tablesquery = $db->query("SELECT name FROM sqlite_master WHERE type='table';");

  4.     while ($table = $tablesquery->fetchArray(SQLITE3_ASSOC)) {
  5.         echo $table['name'] . '<br />';
  6.     }
  7. ?>
複製代碼


參考文章
https://www.yiibai.com/sqlite/php-with-sqlite.html
https://stackoverflow.com/questions/17997722/sqlite3-query-to-list-all-tables-in-database-only-shows-one-table

http://www.sqlitetutorial.net/sqlite-tutorial/sqlite-show-tables/

 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2019-6-27 18:40 , Processed in 0.061878 second(s), 24 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表