當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司
輕型數(shù)據(jù)庫(kù)SQLite結(jié)合PHP的開發(fā)
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
鷹潭網(wǎng)站建設(shè) www.diyphp.netSQLite是一款輕型的數(shù)據(jù)庫(kù),它的描繪方針是嵌入式的,而且當(dāng)時(shí)曾經(jīng)在許多嵌入式產(chǎn)物中運(yùn)用了它,它占用資源十分的低,在嵌入式設(shè)備中,可以只需求幾百K的內(nèi)存就夠了。它可以撐持Windows/Linux/Unix等等干流的操作體系,還可以跟許多順序言語相連系,比方Tcl、PHP、Java等,還有ODBC接口,相同比起Mysql、PostgreSQL這兩款開源國(guó)際聞名的數(shù)據(jù)庫(kù)辦理體系來講,它的處置速度比他們都快。
SQLite固然很細(xì)巧,可是撐持的SQL句子不會(huì)差勁于其他開源數(shù)據(jù)庫(kù),它撐持的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
還它還撐持事務(wù)處置功用等等。也有人說它象Microsoft的Access,有時(shí)分真的覺得有點(diǎn)象,可是事實(shí)上它們差異很大。比方SQLite撐持跨平臺(tái),操作簡(jiǎn)略,可以運(yùn)用許多言語直接創(chuàng)立數(shù)據(jù)庫(kù),而不象Access相同需求Office的撐持。若是你是個(gè)很小型的運(yùn)用,或許你想做嵌入式開發(fā),沒有適宜的數(shù)據(jù)庫(kù)體系,那么如今你可以思索運(yùn)用SQLite。當(dāng)時(shí)它的最新版別是 3.2.2,它的官方網(wǎng)站是:http://www.sqlite.org,能在上面取得源代碼和文檔。還由于數(shù)據(jù)庫(kù)布局簡(jiǎn)略,體系源代碼也不是許多,也合適想研討數(shù)據(jù)庫(kù)體系開發(fā)的專業(yè)人士。
如今咱們開端簡(jiǎn)略的引見,首要我是想講清晰幾個(gè)問題,一是如何裝置運(yùn)用,二是如何跟PHP連系開發(fā)。
一、裝置
1. Windows平臺(tái)
下載windows下的文件,其實(shí)就是一個(gè)指令行順序,(下載地址:http://www.sqlite.org/sqlite-3_2_2.zip),這個(gè)指令行順序用來包羅生成數(shù)據(jù)庫(kù)文件、履行SQL查詢、備份數(shù)據(jù)庫(kù)等等功用。
下載后比方咱們解壓縮到 D:Downloadssqlitesqlite-3_2_2 這個(gè)目錄下,那么咱們進(jìn)入cmd,而且進(jìn)入該目錄:
cd D:Downloadssqlitesqlite-3_2_2
D:Downloadssqlitesqlite-3_2_2>sqlite3 test.db
# 若是test.db不存在,那么就發(fā)生一個(gè)數(shù)據(jù)庫(kù)文件,若是存在就直接運(yùn)用該數(shù)據(jù)庫(kù)文件,相當(dāng)于mysql中的use
SQLite version 3.2.2
Enter ".help" for instructions
sqlite>
# SQLite的提示符,若是想檢查指令協(xié)助輸入 .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
橫豎運(yùn)用規(guī)范的SQL來操作就沒有問題,不清晰可以去官方網(wǎng)站上檢查協(xié)助信息。別的還要闡明的是SQLite不撐持修正表布局,若是要修正表布局,只要?jiǎng)h去表從頭再樹立,所以樹立表的時(shí)分一定要思索擴(kuò)大性。估量今后這方面的功用會(huì)加強(qiáng)。
2. Linux/Unix 平臺(tái)
error: 當(dāng)時(shí)還沒裝過,呵呵,不過估量跟Windows差不多,改天把這部分內(nèi)容補(bǔ)上。
二、PHP對(duì)SQLite的開發(fā)
PHP 5開端不再默許撐持Mysql,而是默許撐持SQLite,可見它的影響力多么大,所以若是你想做SQLite的PHP開發(fā),主張你運(yùn)用PHP 5.0.0以上版別,我當(dāng)時(shí)運(yùn)用的是 PHP 5.0.4版別,直接撐持SQLite擴(kuò)大,這里我就不細(xì)心講如何裝置PHP擴(kuò)大,若是不清晰可以檢查PHP關(guān)聯(lián)文檔。
這里我首要是講對(duì)準(zhǔn)SQLite的開發(fā)。當(dāng)時(shí)PHP的干流DB類都撐持SQLite的驅(qū)動(dòng),包羅PEAR::DB類、ADOdb類都撐持,所以運(yùn)用DB來來做開發(fā)也是個(gè)好的挑選。
(以下操作為了簡(jiǎn)潔,都是再Windows xp平臺(tái)進(jìn)行的)
1. 運(yùn)用PHP操作曾經(jīng)樹立好的sqlite數(shù)據(jù)庫(kù)
若是你有一個(gè)曾經(jīng)經(jīng)過sqlite.exe樹立好了的數(shù)據(jù)庫(kù)和表布局,那么你就可以直接對(duì)它進(jìn)行操作。php中對(duì)準(zhǔn)sqlite的處置函數(shù)比擬多,你可以檢查PHP手冊(cè)取得詳細(xì)信息。
咱們運(yùn)用sqlite_open()函數(shù)來翻開一個(gè)sqlite數(shù)據(jù)庫(kù),它成功回來一個(gè)操作資源,失利回來false,那么今后的一切操作都是在這個(gè)資源上進(jìn)行的,履行一個(gè)sql查詢運(yùn)用sqlite_query函數(shù)。
下面我假定你在當(dāng)時(shí)PHP順序目錄下有一個(gè)abc.db的sqlite數(shù)據(jù)庫(kù)文件,咱們對(duì)該文件進(jìn)行操作:
//翻開sqlite數(shù)據(jù)庫(kù)
$db = @sqlite_open("abc.db");
//反常處置
if (!$db) die("Connection Sqlite failed.n");
//增加一個(gè)叫做foo的數(shù)據(jù)庫(kù)
@sqlite_query($db, "CREATE TABLE foo (bar varchar(10))");
//刺進(jìn)一條記載
@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
)
證明咱們代碼履行成功,沒有輸入請(qǐng)檢查順序,或許你的數(shù)據(jù)庫(kù)文件能否存在。
那么有了這個(gè)根本操作,你就可以思索運(yùn)用更雜亂的操作和SQL來操作它,讓它幫你辦理信息,你可以做一個(gè)留言本,或許做一個(gè)CMS體系,我想都是沒有問題的。
2. 運(yùn)用PHP樹立數(shù)據(jù)庫(kù)而且操作
若是你沒有任何sqlite.exe之類的東西,那么你也可以經(jīng)過php來創(chuàng)立一個(gè)sqlite數(shù)據(jù)庫(kù),而且對(duì)它進(jìn)行辦理。
其實(shí)經(jīng)過sqlite.exe順序樹立的數(shù)據(jù)庫(kù),內(nèi)容是空的,其實(shí)只要后來等創(chuàng)立表,增加數(shù)據(jù)今后,數(shù)據(jù)庫(kù)文件才有,那么咱們是不是可以手藝增加一個(gè)文件,比方一個(gè)空的 test.db 文件,而且對(duì)它進(jìn)行操作。這是完全可以,下面咱們就運(yùn)用PHP順序來完結(jié)創(chuàng)立一個(gè)數(shù)據(jù)庫(kù),而且履行簡(jiǎn)略的樹立數(shù)據(jù)表,刺進(jìn)數(shù)據(jù)和檢索數(shù)據(jù)的功用。
首要咱們來看代碼:(代碼比擬長(zhǎng),但比擬簡(jiǎn)略了解)
/**
* 文件:sqlite.php
* 功用:對(duì)sqlite數(shù)據(jù)庫(kù)的處置
* 作者:heiyeluren
* 工夫:2005-8-5
*/
define("LN", __LINE__);//行號(hào)
define("FL", __FILE__);//當(dāng)時(shí)文件
define("DEBUG", 0);//調(diào)試開關(guān)
$db_name = "heiyeluren.db";
//創(chuàng)立數(shù)據(jù)庫(kù)文件,文件內(nèi)容為空
if (!file_exists($db_name)) {
if (!($fp = fopen($db_name, "w+"))) {
exit(error_code(-1, LN));
}
fclose($fp);
}
//翻開數(shù)據(jù)庫(kù)文件
if (!($db = sqlite_open($db_name))) {
exit(error_code(-2, LN));
}
//發(fā)生數(shù)據(jù)表布局
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));
}
//刺進(jìn)一條數(shù)據(jù)
if (!sqlite_query($db, " INSERT INTO test (name) VALUES ('heiyeluren') ")) {
exit(error_code(-4, LN));
}
//把數(shù)據(jù)檢索出來
if (!($result = sqlite_query($db, "SELECT * FROM test"))) {
exit(error_code(-5, LN));
}
//獲取檢索數(shù)據(jù)并顯現(xiàn)
while ($array = sqlite_fetch_array($result)) {
echo "ID: ". $array[id] ."
Name: ". $array[name] ;
}
/* 過錯(cuò)信息代碼函數(shù) */
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
咱們以上的順序包羅了比擬完好的功用,有調(diào)試、反常處置、存取數(shù)據(jù)庫(kù)等功用,算是一個(gè)簡(jiǎn)略運(yùn)用。若是你有愛好也可以進(jìn)行擴(kuò)大。
* 完畢:
咱們根本的操作就講到這里,今后有空我會(huì)把內(nèi)容補(bǔ)全。若是我們有愛好可以去研討一下,或許你的個(gè)人主頁就需求這樣的小型數(shù)據(jù)庫(kù)來協(xié)助你。
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>
# 咱們創(chuàng)立一個(gè)數(shù)據(jù)庫(kù)catlog
sqlite> create table catalog(
...> id integer primarykey,
...> pid integer,
...> name varchar(10) UNIQUE
...> );
sqlite>
# 若是表存在就會(huì)提示:
SQL error: table catalog already exists
# 咱們創(chuàng)立索引信息
create index catalog_idx on catalog (id asc);
# 咱們檢查表的信息,看有多少個(gè)表
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);
# 給數(shù)據(jù)表刺進(jìn)一條記載
sqlite> insert into catalog (ppid,name) values ('001','heiyeluren');
# 成功無任何提示,若是表達(dá)式過錯(cuò)提示過錯(cuò)信息:
SQL error: near "set": syntax error
# 檢索有多少條記載
sqlite> select count(*) from catalog;
1
# 檢索查找記載
sqlite> select * from catalog;
1|1|heiyeluren
- 1Zend2.0的MVC完整過程。
- 2房地產(chǎn)行業(yè)微信營(yíng)銷方案1
- 3常見的 Android 新手誤區(qū)
- 4企業(yè)信息統(tǒng)計(jì)系統(tǒng)開發(fā)方案
- 5房地產(chǎn)行業(yè)微信營(yíng)銷方案2
- 6網(wǎng)站改版注意的問題
- 7Asia-Pacific Economic Cooperation 工商咨詢理事會(huì)亞太中小企業(yè)峰會(huì)
- 8關(guān)于HTML5當(dāng)時(shí)狀況的若干關(guān)鍵
- 9地方生活優(yōu)惠電子商務(wù)網(wǎng)站需求分析
- 10企業(yè)為什么偏愛要專門的網(wǎng)站建設(shè)企業(yè)做官網(wǎng)呢?
- 11APC(Alternative PHP Cache)是一個(gè)PHP緩存
- 12PHP性能優(yōu)化大全
- 13網(wǎng)貸平臺(tái)主要運(yùn)營(yíng)模式主要有兩類---債權(quán)轉(zhuǎn)讓模式
- 14二維碼是網(wǎng)站建設(shè)推廣和發(fā)展的雙刃劍
- 15世界看到你-----微信公眾平臺(tái)
- 16每個(gè)cookie都是一個(gè)名/值對(duì)
- 17萬網(wǎng)云服務(wù)器,優(yōu)惠啦!!!
- 18企業(yè)如何定位自己的企業(yè)網(wǎng)站目標(biāo)
- 19玩具租賃商城系統(tǒng)需求7
- 20玩具租賃系統(tǒng)功能列表
- 21再次提及貸款風(fēng)險(xiǎn)管理
- 22玩具租賃商城系統(tǒng)需求1
- 23專業(yè)級(jí)計(jì)算引入到普通PC的一款免費(fèi)操作系統(tǒng)
- 24閱讀PHP驗(yàn)證碼工具-Securimage
- 25房地產(chǎn)行業(yè)微信營(yíng)銷方案3
- 26網(wǎng)站制作絕對(duì)不可以犯的編程錯(cuò)誤
- 27ecshop中jQuery沖突解決
- 28PHP函數(shù)代碼段
- 29玩具租賃商城系統(tǒng)需求4
- 30如何讓您的網(wǎng)站盈利中發(fā)揮到極致
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓