轻型数据库SQLite结合PHP的开发
SQLite是一款轻型的数据库,它的描绘方针是嵌入式的,而且当时曾经在许多嵌入式产物中运用了它,它占用资源十分的低,在嵌入式设备中,可以只需求几百K的内存就够了。它可以撑持Windows/Linux/Unix等等干流的操作体系,还可以跟许多顺序言语相连系,比方Tcl、PHP、Java等,还有ODBC接口,相同比起Mysql、PostgreSQL这两款开源国际闻名的数据库办理体系来讲,它的处置速度比他们都快。
SQLite固然很细巧,可是撑持的SQL句子不会差劲于其他开源数据库,它撑持的SQL包罗:
ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION
COPY
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT clause
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE
还它还撑持事务处置功用等等。也有人说它象Microsoft的Access,有时分真的觉得有点象,可是事实上它们差异很大。比方SQLite撑持跨平台,操作简略,可以运用许多言语直接创立数据库,而不象Access相同需求Office的撑持。若是你是个很小型的运用,或许你想做嵌入式开发,没有适宜的数据库体系,那么如今你可以思索运用SQLite。当时它的最新版别是 3.2.2,它的官方网站是:http://www.sqlite.org,能在上面取得源代码和文档。还由于数据库布局简略,体系源代码也不是许多,也合适想研讨数据库体系开发的专业人士。
如今咱们开端简略的引见,首要我是想讲清晰几个问题,一是如何装置运用,二是如何跟PHP连系开发。
一、装置
1. Windows平台
下载windows下的文件,其实就是一个指令行顺序,(下载地址:http://www.sqlite.org/sqlite-3_2_2.zip),这个指令行顺序用来包罗生成数据库文件、履行SQL查询、备份数据库等等功用。
下载后比方咱们解压缩到 D:Downloadssqlitesqlite-3_2_2 这个目录下,那么咱们进入cmd,而且进入该目录:
cd D:Downloadssqlitesqlite-3_2_2
D:Downloadssqlitesqlite-3_2_2>sqlite3 test.db
# 若是test.db不存在,那么就发生一个数据库文件,若是存在就直接运用该数据库文件,相当于mysql中的use
SQLite version 3.2.2
Enter ".help" for instructions
sqlite>
# SQLite的提示符,若是想检查指令协助输入 .help,在sqlite中一切体系指令都是 . 最初的:
sqlite> .help
.databases List names and files of attached databases
.dump ?TABLE? ... Dump the database in an SQL text format
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indices TABLE Show names of all indices on TABLE
.mode MODE ?TABLE? Set output mode where MODE is one of:
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML
横竖运用规范的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数据库文件,咱们对该文件进行操作:
//翻开sqlite数据库
$db = @sqlite_open("abc.db");
//反常处置
if (!$db) die("Connection Sqlite failed.n");
//增加一个叫做foo的数据库
@sqlite_query($db, "CREATE TABLE foo (bar varchar(10))");
//刺进一条记载
@sqlite_query($db, "INSERT INTO foo VALUES ('fnord')");
//检索一切记载
$result = @sqlite_query($db, 'select bar from foo');
//打印获取的成果
print_r(sqlite_fetch_array($result));
?>
咱们看到的输出成果是:
Array
(
[0] => fnord
[bar] => fnord
)
证明咱们代码履行成功,没有输入请检查顺序,或许你的数据库文件能否存在。
那么有了这个根本操作,你就可以思索运用更杂乱的操作和SQL来操作它,让它帮你办理信息,你可以做一个留言本,或许做一个CMS体系,我想都是没有问题的。
2. 运用PHP树立数据库而且操作
若是你没有任何sqlite.exe之类的东西,那么你也可以经过php来创立一个sqlite数据库,而且对它进行办理。
其实经过sqlite.exe顺序树立的数据库,内容是空的,其实只要后来等创立表,增加数据今后,数据库文件才有,那么咱们是不是可以手艺增加一个文件,比方一个空的 test.db 文件,而且对它进行操作。这是完全可以,下面咱们就运用PHP顺序来完结创立一个数据库,而且履行简略的树立数据表,刺进数据和检索数据的功用。
首要咱们来看代码:(代码比拟长,但比拟简略了解)
/**
* 文件:sqlite.php
* 功用:对sqlite数据库的处置
* 作者:heiyeluren
* 工夫:2005-8-5
*/
define("LN", __LINE__);//行号
define("FL", __FILE__);//当时文件
define("DEBUG", 0);//调试开关
$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<-6 || $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
咱们以上的顺序包罗了比拟完好的功用,有调试、反常处置、存取数据库等功用,算是一个简略运用。若是你有爱好也可以进行扩大。
* 完毕:
咱们根本的操作就讲到这里,今后有空我会把内容补全。若是我们有爱好可以去研讨一下,或许你的个人主页就需求这样的小型数据库来协助你。
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>
# 咱们创立一个数据库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
- 1Zend2.0的MVC完整过程。
- 2房地产行业微信营销方案1
- 3常见的 Android 新手误区
- 4企业信息统计系统开发方案
- 5房地产行业微信营销方案2
- 6网站改版注意的问题
- 7Asia-Pacific Economic Cooperation 工商咨询理事会亚太中小企业峰会
- 8关于HTML5当时状况的若干关键
- 9地方生活优惠电子商务网站需求分析
- 10企业为什么偏爱要专门的网站建设企业做官网呢?
- 11APC(Alternative PHP Cache)是一个PHP缓存
- 12PHP性能优化大全
- 13网贷平台主要运营模式主要有两类---债权转让模式
- 14二维码是网站建设推广和发展的双刃剑
- 15世界看到你-----微信公众平台
- 16每个cookie都是一个名/值对
- 17万网云服务器,优惠啦!!!
- 18企业如何定位自己的企业网站目标
- 19玩具租赁商城系统需求7
- 20玩具租赁系统功能列表
- 21再次提及贷款风险管理
- 22玩具租赁商城系统需求1
- 23专业级计算引入到普通PC的一款免费操作系统
- 24阅读PHP验证码工具-Securimage
- 25房地产行业微信营销方案3
- 26网站制作绝对不可以犯的编程错误
- 27ecshop中jQuery冲突解决
- 28PHP函数代码段
- 29玩具租赁商城系统需求4
- 30如何让您的网站盈利中发挥到极致
成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼