PHP
发布时间:2019-11-11 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP基于ORM方式操作MySQL数据库实例,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了php基于ORM方式操作MySQL数据库。分享给大家供大家参考,具体如下:
ORM----Oriented Relationship Mapper,即用面向对象的方式来操作数据库。归根结底,还是对于sql语句的封装。
首先,我们的数据库有如下一张表:
我们希望能够对这张表,利用setUserid("11111"),即可以设置userid;getUserid()既可以获得对象的userid。所以,我们需要建立model对象,与数据库中的表对应。
由于每张表所对应的model都应该是有set/get操作,所以,我们用一个父类BasicModel进行定义。其他model都是继承至这个model。
BasicModel的代码如下:
php;">
@H_706_19
@map = array(
);
}
function __set($key,$
value){
$this->map[$key] = $value;
}
function __get($key)
{
return $this->map[$key];
}
function __call($name,$arguments)
{
if(substr($name,3)=='set')
{
$this->__set(strtolower(substr($name,3)),$arguments
[0]);
}else
{
return $this->__get(strtolower(substr($name,3))
);
}
}
}
?>
那么,与tb_user表相互对应的model类TbUser则对它进行继承。
php;">
这样,我们就可以对TbUser的实例进行set/get操作了。
要用ORM进行操作数据库,就必须可以findByWhere($wherE)进行查询,返回的为对象数组;save($tbUser)进行保存;delete($obj)进行删除;update($obj)进行更新操作。
本质上,就是用户传入的是对象,我们再利用代码将对象转换为sql语句。本质上,执行的还是sql语句。
所以,我们对一系列的操作用接口表示。IBasicDAO的代码如下:
php;">
我们最关键,就是对此接口进行实现。完成对象和SQL的转换。
BasicDAO的代码如下:
php;">
h,$this->user,$this->pass,$this->db
);
return $conn;
}
//初始化
public function init()
{
//根据model的名字得到
表的名字
$this->tabl
ename = strtolower(substr($this->modelName,2))."_".strtolower(substr($this->modelName,2)
);
}
//获得一个表的列名
public function get
column($table
Name) {
$sql = "show
columns from ".$tabl
ename;
$conn = $this->getConnection(
);
$
columns = array(
);
if($conn
!=null)
{
$rtn = mysqli_query($conn,$sql
);
while($rtn
!==
false&&($row=mysqli_fetch_array($rtn))
!=null)
{
$
columns[] = $row
[0];
}
mysqli_close($conn
);
}
return $
columns;
}
//条件查询
public function findByWhere($wher
E){
//获得数据表的列名
$
columns = $this->get
column($this->table
Name);
//拼接
sql语句
$sql = "
SELEct * from ".$this->tabl
ename." where ".$where;
$conn = $this->getConnection(
);
$arr = array(
);
if($conn
!=null)
{
$rtn = mysqli_query($conn,$sql
);
while($rtn
!==
false&&($row=mysqli_fetch_array($rtn))
!=null)
{
$index = -1;
$obj = new $this->modelName(
);
foreach($
columns as $
column)
{
$obj->
{"set".ucfirst($
column)}($row[++$index]
);
}
$arr[] = $ob
j;
}
mysqli_close($conn
);
}
return $arr;
}
//分页查询;支持排序
public function findWhereOrderBy($where,$limit=null)
{
//获得数据表的列名
$
columns = $this->get
column($this->table
Name);
//拼接
sql语句
$sql = "
SELEct * from ".$this->tabl
ename." where ".$where." order by ".$order;
if($start
!=null&&$limit
!=null)
{
$sql .= "limit ".$start.",".$limit;
}
$conn = $this->getConnection(
);
$arr = array(
);
if($conn
!=null)
{
$rtn = mysqli_query($conn,$sql
);
while($rtn
!==
false&&($row=mysqli_fetch_array($rtn))
!=null)
{
$index = -1;
$obj = new $this->modelName(
);
foreach($
columns as $
column)
{
$obj->
{"set".ucfirst($
column)}($row[++$index]
);
}
$arr[] = $ob
j;
}
mysqli_close($conn
);
}
return $arr;
}
//保存操作
public function save($obj)
{
$
columns = $this->get
column($this->table
Name);
$conn = $this->getConnection(
);
$tag =
false;
if($conn
!=null)
{
$sql = "insert into ".$this->tabl
ename."(";
foreach($
columns as $
column)
{
$sql .= $
column.",";
}
$sql = substr($sql,strlen($sql)-1).") values(";
foreach($
columns as $
column)
{
$value = $obj->
{"get".ucfirst($
column)}(
);
//判断$value的类型
if($value==null)
{
$sql .= "null,";
}else if(preg_match("/^[
0-9]*$/",$
value))
{
//是数字
$sql .= $value.",";
}else
{
$sql .= "'".$value."',";
}
}
$sql = substr($sql,strlen($sql)-1
);
$sql .= ")";
//
执行sql语句
mysqli_query($conn,$sql
);
$tag = true;
mysqli_close($conn
);
}
return $tag;
}
//删除操作
public function
delete($obj)
{
$conn = $this->getConnection(
);
$tag =
false;
if($conn
!=null)
{
$sql = "
delete from ".$this->tabl
ename." where ";
$
columns = $this->get
column($this->table
Name);
$value = $obj->
{"get".ucfirst($
columns
[0])}(
);
if($value
!=null)
{
//是数字
if(preg_match("/^[
0-9]*$/",$
value))
{
$sql .= $
columns
[0]."=".$value;
}else
{
$sql .= $
columns
[0]."='".$value."'";
}
//执行
mysqli_query($conn,$sql
);
$tag = true;
}
mysqli_close($conn
);
}
return $tag;
}
//更新操作
public function
update($obj)
{
$conn = $this->getConnection(
);
$
columns = $this->get
column($this->table
Name);
$tag =
false;
if($conn
!=null)
{
$sql = "
update ".$this->tabl
ename." set ";
for($i=1;$i
{"get".ucfirst($columns[$i])}();
if($value==null){
$sql .= $column."=null,$value)){
$sql .= $column."=".$value.",";
}else{
$sql .= $column."='".$value."',strlen($sql)-1);
$sql .= " where ";
$tempcolumn = $columns[0];
$tempValue = $obj->{"get".ucfirst($columns[0])}();
if(preg_match("/^[0-9]*$/",$tempvalue)){
$sql .= $tempcolumn."=".$tempValue;
}else{
$sql .= $tempcolumn."='".$tempValue."'";
}
//执行操作
mysqli_query($conn,$sql);
$tag = true;
mysqli_close($conn);
}
return $tag;
}
}
?>
那么,对tb_user表进行操作时,主要利用的是TbUserDAO,它将modelName设置为"TbUser",代码就得知操作的表为tb_user,然后就可以进行一系列操作了。
php;">
@H_900_46
@modelName = 'TbUser';
parent::init(
);
}
}
?>
那么,就可以采用面向对象的方式对数据库进行操作了。
如:
setUserid("fetchingsoft@163.com"
);
$tbUser->setUsername("fetching"
);
$tbUserDAO->
update($tbUser
);
echo "执行成功!";
print_r($list
);
这样对数据库中的记录进行更新。
更多关于php相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《php常见数据库操作技巧汇总》
希望本文所述对大家php程序设计有所帮助。
大佬总结
以上是大佬教程为你收集整理的PHP基于ORM方式操作MySQL数据库实例全部内容,希望文章能够帮你解决PHP基于ORM方式操作MySQL数据库实例所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。