自己動手做乙個SQL直譯器

2021-04-17 08:14:53 字數 2012 閱讀 2627

自己動手做乙個

sql直譯器

在一些小型的應用中,完全沒有必要使用大型資料庫軟體。自己做乙個sql

直譯器就能用資料庫的方式來管理了。

這個直譯器,能解釋常用的sql命令。你可以自行新增其他功能。

<?php

class db_text

function connect($database_name)

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

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

fclose($fp);

}function &query($query)

function fetch_row(&$result)

function num_rows($result)

/*** query的輔助函式

*/function _select($query)

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

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

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

}else

if($order)

return $rs;

}function _insert($query)

function _update($query)

$this->_close();

}function _delete($query)

reset($this->conn[$regs[1]]);

while(list($key,$value) = each($this->conn[$regs[1]]))

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

$this->_close();

}function _where($search,$table)

}/** 排序鍵

*/$cmp_key = "";

/** 排序用工作函式(降序 由usort()呼叫)

*/function _cmp_desc($a,$b)

/** 排序用工作函式(公升序 由usort()呼叫)

*/function _cmp_asc($a,$b)

?>

測試例:

<?php

//require_once "db_text.php";

$conn = new db_text;

$conn->connect("text1.txt");

$conn->query("insert into manage (id,title) values (10,'abcd')");

$conn->query("insert into manage (id,title) values (2,'43d')");

$conn->query("insert into manage (id,title) values (20,'tuu')");

$conn->query("update manage set id=101,test='a' where id=10");

//$conn->query("delete from manage where id='10'");

//$conn->query("delete from manage where id=10 or table='code'");

//$rt = $conn->query("select * from manage where id=101 or table='code' group by 1 order by 1 asc");

$rt = $conn->query("select * from manage group by 1 order by id desc");

print_r($rt);

?>

自己動手做乙個docker base images

一般在手寫dockerfile 的時候 第一句都是form 乙個base image 今天來動手打乙個很簡單的base iamge 看一下 1.統一環境 docker 版本 docker version client version 18.09.0 api version 1.39 go versi...

自己動手做乙個區域網聊天工具(一)

socket 程式設計。現在談談我對 socket 的理解。socket 的中文翻譯叫插座。我感覺這個翻譯很形象。socket 可以理解為一種連線物件,就是把服務端和客戶端都連線起來的物件。具體就是假如服務端和客戶端要連線起來,就是服務端和客戶端都要建立乙個 socket 物件,然後二者通過 soc...

(三)自己動手,做乙個屬於自己的疫情填報收集表

前言 第1章 在win10下配置asp的執行環境 第2章 系統需求分析 第3章 主要程式編寫的 結語 要開發乙個管理系統,本人認為主要有下面幾點是要先規劃的好的,不然,開發到中間,可能就會出現混亂,最後累倒的還是自己,使用者只要是方便就行,最好這個上報系統別給他們添亂,而領導只是要看結果,過程的酸甜...