SQLite PHP接口

SQLite PHP接口

在本章中,您将学习如何在PHP程序中使用SQLite

安装

PHP 5.3.0版本开始,默认情况下启用了SQLite3扩展。可以在编译时使用 --without-sqlite3 来禁用它。

Windows用户必须启用php_sqlite3.dll才能使用该扩展。自PHP 5.3.0版本以来,此DLL已包含在Windows版的PHP中。

有关详细的安装说明,请查看我们的PHP教程和其官方网站。

PHP接口API

以下是一些重要的PHP例程,可满足您从PHP程序中使用SQLite数据库的需求。如果您正在寻找更复杂的应用程序,可以查阅PHP官方文档。

序号 API与描述
1 public void SQLite3::open ( 文件名, 标志, 加密密钥 ) 打开SQLite 3数据库。如果构建包含加密功能,它将尝试使用密钥。 如果文件名给出为 ‘:memory:’ ,SQLite3::open() 将在RAM中创建一个仅在会话期间存在的内存数据库。 如果文件名是实际设备文件名,SQLite3::open() 将尝试使用其值打开数据库文件。如果没有该名称的文件存在,则会创建一个新的数据库文件。 可选的标志用于决定如何打开SQLite数据库。默认情况下,open 使用 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
   class MyDB extends SQLite3 {
      function __construct() {
         this->open('test.db');
      }
   }db = new MyDB();
   if(!db) {
      echodb->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
?>

现在,让我们运行上面的程序来创建我们的数据库 test.db 在当前目录中。您可以根据您的要求更改路径。如果成功创建数据库,将显示以下消息−

Open database successfully

创建表格

以下PHP程序将用于在先前创建的数据库中创建一个表格。

<?php
   class MyDB extends SQLite3 {
      function __construct() {
         this->open('test.db');
      }
   }db = new MyDB();
   if(!db) {
      echodb->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){
      echodb->lastErrorMsg();
   } else {
      echo "Table created successfully\n";
   }
   $db->close();
?>

当上述程序被执行时,它将在你的test.db中创建公司表,并显示以下信息-

Opened database successfully
Table created successfully

插入操作

以下 PHP 程序展示了如何在上面示例中创建的 COMPANY 表中创建记录。

<?php
   class MyDB extends SQLite3 {
      function __construct() {
         this->open('test.db');
      }
   }db = new MyDB();
   if(!db){
      echodb->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) {
      echodb->lastErrorMsg();
   } else {
      echo "Records created successfully\n";
   }
   $db->close();
?>

当上面的程序被执行时,它将在COMPANY表中创建给定的记录,并显示以下两行。

Opened database successfully
Records created successfully

SELECT操作

以下PHP程序显示了如何从上述示例中创建的COMPANY表中提取和显示记录:

<?php
   class MyDB extends SQLite3 {
      function __construct() {
         this->open('test.db');
      }
   }db = new MyDB();
   if(!db) {
      echodb->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();
?>

当上述程序被执行时,将会产生以下结果。

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) {
      echodb->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) {
      echodb->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();
?>

当执行上述程序时,将产生以下结果。

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

删除操作

以下PHP代码显示了如何使用DELETE语句删除任意记录,然后从COMPANY表中获取并显示剩余的记录。

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

当以上程序被执行时,它将产生以下结果。

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程