做自己的PHP语法解释器,PHP语言之自己动手做一个SQL解释器
本文主要向大家介绍了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解释器相关推荐
- java做物理引擎_不使用物理引擎,自己动手做真实物理的模拟投篮游戏
最近打算做一个2D投篮游戏,由于对于BOX2D等物理引擎并不熟悉,加之一开始低估了游戏所需要的碰撞检测复杂度,认为仅仅涉及4面墙,篮球,篮板,篮筐,篮网的碰撞检测并不复杂.因此决定自己实现所需要的碰撞 ...
- c0语言语法,《Groovy语言规范》-语法
原文链接 译者:王山山 语法 本章节涵盖了Groovy编程语言的语法.Groovy语言的语法源自Java语法,为Groovy增强了特定构造,允许一定程度上的简化语法. 1.注释 1.1.单行注释 单 ...
- 不从事编程、学python有用吗-为什么你觉得C语言什么都不能做,学了没用?不可能的...
对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...
- B2B电子商务网站建设怎么做:B2B系统开发流程、语言、架构解答
一个B2B电子商务系统建设的要点是什么?如何选择合适的B2B电子商务网站开发语言?想要开发一个属于自己公司的B2B系统网站需要先定位好市场.产品以及选择什么样的语言程序架构等等. 一.主流的B2B电子 ...
- lr 1 语法分析器c语言,LR语法分析器
1 LR语法分析器 本节介绍一个有效的自底向上的分析技术,可以用于一大类上下文无关文法的语法分析.这种技术叫做LR(k)分析法,其中L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程,k指的是在 ...
- 可以不学c语言直接学python_为什么你觉得C语言什么都不能做,学了没用?不可能的...
对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...
- 做游戏,学编程(C语言)教材《C语言课程设计与游戏开发实践教程》出版了...
经过半年多的写作.修改.校样.印制,我们的实践教材<C语言课程设计与游戏开发实践教程>终于出版了.这本书可以看成是"做游戏,学编程(C语言)专栏"的详细版本,以下为书中 ...
- c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?不可能的...
对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...
- c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?错!大错特错!!!...
对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...
最新文章
- MySQL高级知识(十五)——主从复制
- VTK:Filtering之ProgrammableFilter
- [vue-cli]vue-cli3插件有写过吗?怎么写一个代码生成插件?
- linux命令行的操作符,如何在Linux命令行中进行基本的数学运算
- C语言打印彩色字符——以(枚举法+字符串查找)为例展示
- 工作组win7计算机无法访问,win7系统没有权限访问工作组计算机的解决方法
- hashmap hash冲突怎么解决_对HashMap的思考及手写实现
- 利用FPGA实现出租车计费系统
- Matlab fspecial函数
- win10 WLAN共享给以太网口
- 弘辽科技:淘宝评分飘绿四大原因及快速提高评分之解决技巧
- 网络流行语“不作不死”英文入选美国词典
- 微型计算机存储容量2mb,在微型计算机中,存储容量为2MB是指
- golang 时间格式化
- Dilated Convolution介绍
- 怎么把ogg音频格式转换为mp3
- mongdb 鉴权失败,添加用户数据失败
- 【UI设计】移动设备的界面设计尺寸
- wod我的博客开通了
- Oauth与Shiro整合的开源项目
热门文章
- 基于matlab的三相电路短路,终稿毕业论文设计基于MATLAB的电力系统短路故障分析与仿真.doc最终版(备份存档)...
- python将列表转换成集合_python集合变成列表
- python flask_python和flask框架开发以太坊智能合约
- 申请宣告专利权无效的主体有哪些 ?
- ROS中gmapping建图教程
- 文本溢出处理和文本首行空两格解决办法
- AU2019直装版/Audition CC2019安装包
- jquery获取指定元素
- 危楼还望,叹此意、今古几人曾会? — 夜读南宋词人陈亮《念奴娇·登多景楼》感怀
- 华为9306如何设置用户名登陆