本文主要向大家介绍了PHP语言之自己动手做一个SQL解释器,通过具体的内容向大家展示,希望对大家学习php语言有所帮助。

这是从别的地方看到的,俺还不会写这么无聊的东西

class DB_text {

var $conn;

var $classname = "db_text";

var $database;

function on_create() {

}

function connect($database_name) {

$this->database = $database_name;

if(! file_exists($database_name)) {

$this->conn = array();

$this->_close();

}

$fp = fopen($this->database,"r");

$this->conn = unserialize(fread($fp,filesize($this->database)));

fclose($fp);

}

function &query($query) {

if(eregi("select ",$query)) return $this->_select($query);

if(eregi("insert ",$query)) return $this->_insert($query);

if(eregi("delete ",$query)) return $this->_delete($query);

if(eregi("update ",$query)) return $this->_update($query);

return array();

}

function fetch_row(&$result) {

if(list($key,$value) = each($result))

return $value;

return false;

}

function num_rows($result) {

return count($result);

}

/**

* query的辅助函数

*/

function _select($query) {

if(eregi("(order by (. ))",$query,$regs)) {

$order = $regs[2];

$query = eregi_replace($regs[1],"",$query);

}

if(eregi("(group by (. ))",$query,$regs)) {

$group = $regs[2];

$query = eregi_replace($regs[1],"",$query);

}

eregi("select .* from ([0-9a-z_] ) *(where (. ))?",$query,$regs);

if($regs[3] != "") {

$keys = $this->_where($regs[3],"$this->conn[$regs[1]]");

while(list($key,$value) = each($keys)) {

$rs[] = $this->conn[$regs[1]][$value];

}

}else {

$rs = $this->conn[$regs[1]];

}

if($order) {

sscanf($order,"%s %s",$key,$type);

if(empty($type)) $type = "asc";

$this->_sort($rs,$key,$type);

}

return $rs;

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言PHP频道!

做自己的PHP语法解释器,PHP语言之自己动手做一个SQL解释器相关推荐

  1. java做物理引擎_不使用物理引擎,自己动手做真实物理的模拟投篮游戏

    最近打算做一个2D投篮游戏,由于对于BOX2D等物理引擎并不熟悉,加之一开始低估了游戏所需要的碰撞检测复杂度,认为仅仅涉及4面墙,篮球,篮板,篮筐,篮网的碰撞检测并不复杂.因此决定自己实现所需要的碰撞 ...

  2. c0语言语法,《Groovy语言规范》-语法

    原文链接  译者:王山山 语法 本章节涵盖了Groovy编程语言的语法.Groovy语言的语法源自Java语法,为Groovy增强了特定构造,允许一定程度上的简化语法. 1.注释 1.1.单行注释 单 ...

  3. 不从事编程、学python有用吗-为什么你觉得C语言什么都不能做,学了没用?不可能的...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  4. B2B电子商务网站建设怎么做:B2B系统开发流程、语言、架构解答

    一个B2B电子商务系统建设的要点是什么?如何选择合适的B2B电子商务网站开发语言?想要开发一个属于自己公司的B2B系统网站需要先定位好市场.产品以及选择什么样的语言程序架构等等. 一.主流的B2B电子 ...

  5. lr 1 语法分析器c语言,LR语法分析器

    1 LR语法分析器 本节介绍一个有效的自底向上的分析技术,可以用于一大类上下文无关文法的语法分析.这种技术叫做LR(k)分析法,其中L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程,k指的是在 ...

  6. 可以不学c语言直接学python_为什么你觉得C语言什么都不能做,学了没用?不可能的...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  7. 做游戏,学编程(C语言)教材《C语言课程设计与游戏开发实践教程》出版了...

    经过半年多的写作.修改.校样.印制,我们的实践教材<C语言课程设计与游戏开发实践教程>终于出版了.这本书可以看成是"做游戏,学编程(C语言)专栏"的详细版本,以下为书中 ...

  8. c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?不可能的...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  9. c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?错!大错特错!!!...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

最新文章

  1. MySQL高级知识(十五)——主从复制
  2. VTK:Filtering之ProgrammableFilter
  3. [vue-cli]vue-cli3插件有写过吗?怎么写一个代码生成插件?
  4. linux命令行的操作符,如何在Linux命令行中进行基本的数学运算
  5. C语言打印彩色字符——以(枚举法+字符串查找)为例展示
  6. 工作组win7计算机无法访问,win7系统没有权限访问工作组计算机的解决方法
  7. hashmap hash冲突怎么解决_对HashMap的思考及手写实现
  8. 利用FPGA实现出租车计费系统
  9. Matlab fspecial函数
  10. win10 WLAN共享给以太网口
  11. 弘辽科技:淘宝评分飘绿四大原因及快速提高评分之解决技巧
  12. 网络流行语“不作不死”英文入选美国词典
  13. 微型计算机存储容量2mb,在微型计算机中,存储容量为2MB是指
  14. golang 时间格式化
  15. Dilated Convolution介绍
  16. 怎么把ogg音频格式转换为mp3
  17. mongdb 鉴权失败,添加用户数据失败
  18. 【UI设计】移动设备的界面设计尺寸
  19. wod我的博客开通了
  20. Oauth与Shiro整合的开源项目

热门文章

  1. 基于matlab的三相电路短路,终稿毕业论文设计基于MATLAB的电力系统短路故障分析与仿真.doc最终版(备份存档)...
  2. python将列表转换成集合_python集合变成列表
  3. python flask_python和flask框架开发以太坊智能合约
  4. 申请宣告专利权无效的主体有哪些 ?
  5. ROS中gmapping建图教程
  6. 文本溢出处理和文本首行空两格解决办法
  7. AU2019直装版/Audition CC2019安装包
  8. jquery获取指定元素
  9. 危楼还望,叹此意、今古几人曾会? — 夜读南宋词人陈亮《念奴娇·登多景楼》感怀
  10. 华为9306如何设置用户名登陆