介绍
如何在PHP中使用ORM方式操作MySQL数据库?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
首先,我们的数据库有如下一张表:
我们希望能够对这张表,利用setUserid(“11111”),即可以设置标识;getUserid()既可以获得对象的userid。所以,我们需要建立模型对象,与数据库中的表对应。
由于每张表所对应的模型都应该是有设置/获取操作,所以,我们用一个父类BasicModel进行定义。其他模型都是继承至这个模型。
BasicModel的代码如下:
& lt; PHP ? ,/* ,,*,作者:Tammy π ,,*,功能:模型类的基类,封装设置/获取操作 ,,*/class BasicModel{才能 ,,,private map 美元;=,空; ,,,function TbUser (), { ,,,,,这个→美元map =,数组(); ,,,} ,,,function __set(键,美元价值){ ,,,,,这个→美元地图[$ key],=,美元价值; ,,,} ,,,function __get(键){ ,,,,,return $ this→地图(美元关键); ,,,} ,,,function __call(名称、参数)美元,{ ,,,,,如果(substr(名称、美元0 3)==& # 39;集# 39;){ ,,,,,,,这个→美元__set(函数(substr(美元的名字,3)),美元参数[0]); ,,,,,其他}{ ,,,,,,,return $ this→__get(函数(substr(美元的名字,3))); ,,,,,} ,,,} ,,} 祝辞;
那么,与tb_user表相互对应的模型类TbUser则对它进行继承。
& lt; php ? ,,require_once (“BasicModel.php"); class 才能TbUser extends  BasicModel { ,,} ?在
这样,我们就可以对TbUser的实例进行设置/获取操作了。
要用ORM进行操作数据库,就必须可以findByWhere(美元)进行查询,返回的为对象数组;保存(TbUser美元)进行保存;删除(obj美元)进行删除;更新(obj美元)进行更新操作。
本质上,就是用户传入的是对象,我们再利用代码将对象转换为SQL语句。本质上,执行的还是SQL语句。
所以,我们对一系列的操作用接口表示.IBasicDAO的代码如下:
& lt; php ? interface 才能;IBasicDAO  { ,,,public function findByWhere(美元); ,,,public function findWhereOrderBy(美元,美元订单,开始=null,限制美元=null); ,,,public function 保存($ obj); ,,,public function 删除(obj美元); ,,,public function 更新($ obj); ,,} 祝辞;
我们最关键,就是对此接口进行实现,完成对象和SQL的转换。
BasicDAO的代码如下:
& lt; php ? ,,require_once (“IBasicDAO.php"); class 才能BasicDAO implements  IBasicDAO { ,,,protected modelName 美元;=,空; ,,,private tableName 美元;=,空; ,,,private h 美元;=,“localhost"; ,,,private user 美元;=,“root"; ,,,private pass 美元;=,“root"; ,,,private db 美元;=,“db_toilet"; ,,,//获得连接 ,,,public function getConnection () { ,,,,,conn 美元;=,mysqli_connect ($ this→h, $ this→用户,这→美元,美元这→db); ,,,,,return 康涅狄格州美元; ,,,} ,,,//初始化 ,,,public function init (), { ,,,,,//根据模型的名字得到表的名字 ,,,,,这个→美元tableName =,函数(substr ($ this→modelName, 0, 2))干净_" .strtolower (substr ($ this→modelName, 2)); ,,,} ,,,//获得一个表的列名 ,,,public function getColumn(表),{ ,,,,,sql 美元;=,“show columns 得到“美元的表; ,,,,,conn 美元;=,$ this→getConnection (); ,,,,,columns 美元;=,数组(); ,,,,,如果($康涅狄格州!=null) { ,,,,,,,rtn 美元;=,mysqli_query(康涅狄格州,sql美元); ,,,,,,,,($研制!==false&及(行=mysqli_fetch_array美元($研制)!=null) { ,,,,,,,,,美元列[],=,行[0]美元; ,,,,,,,} ,,,,,,,mysqli_close(康涅狄格州美元); ,,,,,} ,,,,,return 美元列; ,,,} ,,,//条件查询 ,,,public function findByWhere(美元){ ,,,,,//获得数据表的列名 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何在PHP中使用ORM方式操作MySQL数据库