📜  SQLite-PHP

📅  最后修改于: 2021-01-04 05:12:41             🧑  作者: Mango


在本章中,您将学习如何在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官方文档。

Sr.No. API & Description
1

public void SQLite3::open ( filename, flags, encryption_key )

Opens SQLite 3 Database. If the build includes encryption, then it will attempt to use the key.

If the filename is given as ‘:memory:’, SQLite3::open() will create an in-memory database in RAM that lasts only for the duration of the session.

If the filename is actual device file name, SQLite3::open() attempts to open the database file by using its value. If no file by that name exists, then a new database file by that name gets created.

Optional flags used to determine how to open the SQLite database. By default, open uses SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.

2

public bool SQLite3::exec ( string $query )

This routine provides a quick, easy way to execute SQL commands provided by sql argument, which can consist of more than one SQL command. This routine is used to execute a result-less query against a given database.

3

public SQLite3Result SQLite3::query ( string $query )

This routine executes an SQL query, returning an SQLite3Result object if the query returns results.

4

public int SQLite3::lastErrorCode ( void )

This routine returns the numeric result code of the most recent failed SQLite request.

5

public string SQLite3::lastErrorMsg ( void )

This routine returns English text describing the most recent failed SQLite request.

6

public int SQLite3::changes ( void )

This routine returns the number of database rows that were updated, inserted, or deleted by the most recent SQL statement.

7

public bool SQLite3::close ( void )

This routine closes a database connection previously opened by a call to SQLite3::open().

8

public string SQLite3::escapeString ( string $value )

This routine returns a string that has been properly escaped for safe inclusion in an SQL statement.

连接到数据库

以下PHP代码显示了如何连接到现有数据库。如果数据库不存在,则将创建数据库,最后将返回数据库对象。

open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db) {
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
?>

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

Open database successfully

建立表格

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

open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db) {
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

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

执行上述程序后,它将在test.db中创建COMPANY表,并显示以下消息-

Opened database successfully
Table created successfully

插入操作

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

open('test.db');
      }
   }
   
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

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

执行上述程序后,它将在COMPANY表中创建给定记录,并显示以下两行。

Opened database successfully
Records created successfully

选择操作

以下PHP程序演示了如何从上例中创建的COMPANY表中获取和显示记录-

open('test.db');
      }
   }
   
   $db = new MyDB();
   if(!$db) {
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<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表中获取并显示更新的记录。

open('test.db');
      }
   }
   
   $db = new MyDB();
   if(!$db) {
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
   $sql =<<exec($sql);
   if(!$ret) {
      echo $db->lastErrorMsg();
   } else {
      echo $db->changes(), " Record updated successfully\n";
   }

   $sql =<<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表中获取并显示其余记录。

open('test.db');
      }
   }
   
   $db = new MyDB();
   if(!$db) {
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
   $sql =<<exec($sql);
   if(!$ret){
     echo $db->lastErrorMsg();
   } else {
      echo $db->changes(), " Record deleted successfully\n";
   }

   $sql =<<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