php 5开始不再默认支持mysql_而是默认支持sqlite_轻型数据库SQLite结合PHP的开发

code

insert   SQL insert statements for TABLE

line     One value per line

list     Values delimited by .separator string

tabs     Tab-separated values

tcl      TCL list elements

.nullvalue STRING      Print STRING in place of NULL values

.output FILENAME       Send output to FILENAME

.output stdout         Send output to the screen

.prompt MAIN CONTINUE  Replace the standard prompts

.quit                  Exit this program

.read FILENAME         Execute SQL in FILENAME

.schema ?TABLE?        Show the CREATE statements

.separator STRING      Change separator used by output mode and .import

.show                  Show the current values for various settings

.tables ?PATTERN?      List names of tables matching a LIKE pattern

.timeout MS            Try opening locked tables for MS milliseconds

.width NUM NUM ...     Set column widths for "column" mode

sqlite>

www.knowsky.com

# 我们创建一个数据库catlog

sqlite> create table catalog(

...> id integer primarykey,

...> pid integer,

...> name varchar(10) UNIQUE

...> );

sqlite>

# 如果表存在就会提示:

SQL error: table catalog already exists

# 我们创建索引信息

create index catalog_idx on catalog (id asc);

# 我们查看表的信息,看有多少个表

sqlite> .table

aa       catalog

# 查看表的结构:

sqlite> .schema catalog

CREATE TABLE catalog(

id integer primary key,

pid integer,

name varchar(10) UNIQUE

);

CREATE INDEX catalog_idx on catalog(id asc);

# 给数据表插入一条记录

sqlite> insert into catalog (ppid,name) values ('001','heiyeluren');

# 成功无任何提示,如果表达式错误提示错误信息:

SQL error: near "set": syntax error

# 检索有多少条记录

sqlite> select count(*) from catalog;

1

# 检索搜索记录

sqlite> select * from catalog;

1|1|heiyeluren

反正使用标准的SQL来操作就没有问题,不清楚可以去官方网站上查看帮助信息。另外还要说明的是SQLite不支持修改表结构,如果要修改表结构,只有删除表重新再建立,所以建立表的时候一定要考虑扩展性。估计以后这方面的功能会加强。

2. Linux/Unix 平台

error: 目前还没装过,呵呵,不过估计跟Windows差不多,改天把这部分内容补上。

二、PHP对SQLite的开发

PHP 5开始不再默认支持Mysql,而是默认支持SQLite,可见它的影响力多么大,所以如果你想做SQLite的PHP开发,建议你使用PHP 5.0.0以上版本,我目前使用的是 PHP 5.0.4版本,直接支持SQLite扩展,这里我就不仔细讲如何安装PHP扩展,如果不清楚可以查看PHP相关文档。

这里我主要是讲针对SQLite的开发。目前PHP的主流DB类都支持SQLite的驱动,包括PEAR::DB类、ADOdb类都支持,所以使用DB来来做开发也是个好的选择。

(以下操作为了简便,都是再Windows xp平台进行的)

1. 使用PHP操作已经建立好的sqlite数据库

如果你有一个已经通过sqlite.exe建立好了的数据库和表结构,那么你就能够直接对它进行操作。php中针对sqlite的处理函数比较多,你可以查看PHP手册获得详细信息。

我们使用sqlite_open()函数来打开一个sqlite数据库,它成功返回一个操作资源,失败返回false,那么以后的所有操作都是在这个资源上进行的,执行一个sql查询使用sqlite_query函数。

下面我假设你在当前PHP程序目录下有一个abc.db的sqlite数据库文件,我们对该文件进行操作:

?>

我们看到的输出结果是:

Array

(

[0] => fnord

[bar] => fnord

)

证明我们代码执行成功,没有输入请检查程序,或者你的数据库文件是否存在。

那么有了这个基本操作,你就能够考虑使用更复杂的操作和SQL来操作它,让它帮你管理信息,你可以做一个留言本,或者做一个CMS系统,我想都是没有问题的。

2. 使用PHP建立数据库并且操作

如果你没有任何sqlite.exe之类的工具,那么你也能够通过php来创建一个sqlite数据库,并且对它进行管理。

其实通过sqlite.exe程序建立的数据库,内容是空的,其实只有后来等创建表,添加数据以后,数据库文件才有,那么我们是不是能够手工添加一个文件,比如一个空的 test.db 文件,并且对它进行操作。这是完全可以,下面我们就使用PHP程序来完成创建一个数据库,并且执行简单的建立数据表,插入数据和检索数据的功能。

首先我们来看代码:(代码比较长,但比较容易理解)

$db_name = "heiyeluren.db";

//创建数据库文件,文件内容为空

if (!file_exists($db_name)) {

if (!($fp = fopen($db_name, "w+"))) {

exit(error_code(-1, LN));

}

fclose($fp);

}

//打开数据库文件

if (!($db = sqlite_open($db_name))) {

exit(error_code(-2, LN));

}

//产生数据表结构

if (!sqlite_query($db, "DROP TABLE test")) {

exit(error_code(-3, LN));

}

if (!sqlite_query($db, "CREATE TABLE test (id integer primary key,pid integer,name varchar(10) UNIQUE)")) {

exit(error_code(-3, LN));

}

//插入一条数据

if (!sqlite_query($db, " INSERT INTO test (name) VALUES ('heiyeluren') ")) {

exit(error_code(-4, LN));

}

//把数据检索出来

if (!($result = sqlite_query($db, "SELECT * FROM test"))) {

exit(error_code(-5, LN));

}

//获取检索数据并显示

while ($array = sqlite_fetch_array($result)) {

echo "ID: ". $array[id] ."

Name: ". $array[name] ;

}

/* 错误信息代码函数 */

function error_code($code, $line_num, $debug=DEBUG)

{

if ($code-1) {

return false;

}

switch($code) {

case -1: $errmsg = "Create database file error.";

break;

case -2: $errmsg = "Open sqlite database file failed.";

break;

case -3: $errmsg = "Create table failed, table already exist.";

break;

case -4: $errmsg = "Insert data failed.";

break;

case -5: $errmsg = "Query database data failed.";

break;

case -6: $errmsg = "Fetch data failed.";

break;

case -7: $errmsg = "";

break;

default: $errmsg = "Unknown error.";

}

$m = "[ Error ]

File: ". basename(FL) ."

Line: ". LN ."

Mesg: ". $errmsg ."";

if (!$debug) {

($m = $errmsg);

}

return $m;

}

?>

如果你操作无误的话,那么程序最后输出:

ID: 1

Name: heiyeluren

我们以上的程序包括了比较完整的功能,有调试、异常处理、存取数据库等功能,算是一个简单应用。如果你有兴趣也可以进行扩展。

* 结束:

我们基本的操作就讲到这里,以后有空我会把内容补全。如果大家有兴趣可以去研究一下,也许你的个人主页就需要这样的小型数据库来帮助你。

Author: heiyeluren

Date: 2005-8-5

吐了个 "CAO" !

吐个槽吧,看都看了

PHP1.CN | 中国最专业的PHP中文社区 | json解析格式化 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具

Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值