DF-PUSH(Dec.16)——txtSQL:轻量级文本化数据库

1
Want create site? Find Free WordPress Themes and plugins.

我们常用mysql作为PHP网站的数据库,它有查询速度快,语法简单,安全性高等等有点。此用之于大型项目更适合不过,然则有时候我们需要开发像网站留言本、一次性投票程序等等只需要简单记录数据的web程序,再用mysql就有点“杀鸡用宰牛刀”,显得臃肿了。人们希望PHP也可以像asp的access数据库一样,即插即用。由此,类似txtsql的软件就应运而生。

空口无凭,居正给大家找了一段txt数据库的优缺点分析:

优点:
跨平台,比任何数据库都跨平台;免费,说的是不用再去卖数据库空间;可以像ASP+ACCESS一样管理文件,比如给别人提供程序,或在自己机子调试然后要传到虚拟空间,或换了一个空间要全部移走,就不用phpMyAdmin导出SQL文件再导入;不用出现乱码,MySQL出现乱码的情况应该都遇到过,当然那是有办法解决的,但用文本数据库是不会出现乱码的
缺点:
速度不如专业的数据库,也不支持SQL语句,

为什么使用文本数据库:
新鲜,好玩,挑战性,想尝试一下,拓展思路,
除了大型BBS多用户统计多用户BLOG外,很多程序我们都可以生成静态来解决速度的问题,静态网页的速度最快,而且被搜索引擎收录的机会更大了。

 

txt数据库凡三种,为txtsql、txtDB API、txtdb,居正试用了一下发现txtsql最为好用,于是就推荐给大家。

下载地址(网盘):https://pan.baidu.com/s/1c1NOt8G

(SourceForge原地址):https://sourceforge.net/projects/txtsql/

解压此zip包,里面有一个docs的帮助文章文件夹,还有examples放了两个官方的示例程序。

txtsql的中文资料互联网上很少,这里给大家推荐仅有的几篇文章:

txtsql安装手册中文版:https://github.com/erasin/notes/blob/master/php/txtsql.md

介绍三种文本数据库:txtsql、txtDB API、txtdb:http://www.aslibra.com/blog/read.php?710

好了,现在开始正文(某淀粉:你已经扯蛋800字了…)

关于txtsql的安装方法,上面的文章已经讲述的很详细了。如果你不理解就把文档全部看一遍,必要时也可以用谷歌翻译呀~

居正这里建议大家对于表中数据的操作全部使用query函数,你可以直接使用mysql的命令进行增删改查,不过有一些细节与原版的命令不一样,需要留神。

下面我简单讲解一下:

include 'txtSQL.class.php';//我txtdb的class文件与此测试程序在同一目录下
$db=new txtSQL('./data');
$db->connect('root', '') or die('cannot connect');
$db->selectDb('default');//我创建的数据库名字叫default

下面的例子是创建一张表,表中的数据全部为int形式。注意我创建表的时候用createTable函数,这比query简单多了:

$db->createtable(array('table'=>'teach','columns'=>array('id'=>array('type'=>'int','auto_increment'=>1),'value'=>array('type'=>'int'),'speed'=>array('type'=>'int'))));

insert篇

先看看文档的介绍:

我往里面插入一条数据:

$db->query('insert into teach set (id = 1,value = 100,speed = 666)');

这里一定要注意,query函数中字段对空格有要求,比如当你想把ID设置为1时你必须输入”id = 1″而不是”id=1″,否则会找不到字段。而且,你要写”set (…)”而不是”set(…)”。这大概也是txtsql相比于mysql的不足之处吧。

然后我们写个查询语句,用var_dump输出全部内容:

$q=$db->query('select * from teach');
var_dump($q);

效果:


update篇

OK,现在讲一讲update命令需要注意的地方:

文档介绍:

这里要格外注意,txtsql的update语句中where是写在前面的!而且还是必须的项目!也就是说如果我们要更改所有的数据就必须加个类似”1 = 1″这样的语法。。。。

$db->query('update teach where 1 = 1 set (value = 99999,speed = 8888888)');

在这行代码中,我把1 = 1作为始终成立的条件以更改整张表中的所有数据。

dump出来看看效果:

已经成功修改了。

这里顺便提一下防注入,如果你用query函数,跟mysql一样防就行。


好吧,来总结一下,txtSQL对于小型程序来说很管用,但是还是有一些不方便的地方,总的来说非常不错。另外居正有空会把文档翻译成中文的来给大家参考。如果你在使用中遇到什么问题可以直接在下面留言,我会第一时间解答~

Did you find apk for android? You can find new Free Android Games and apps.

关于作者

大道至简

一条评论

  1. 这几天,参考了大侠的指导文章,把一个小留言板的数据库从mysql迁移到txtsql了,速度提升了近100倍。希望有机会继续讨教~

发表评论