PHP ORM操作MySQL数据库
2017-05-24 21:35
393 查看
先来说说ORM的事儿,ORM全称是Object Relational Mapping[对象关系映射],结合博文标题理解ORM就是把PHP对象映射成数据表里的记录,使用PHP语言完成MySQL数据库的操作,写代码是一种很好的理解原理和概念的方式。
首先给出数据库里一张表的表结构,如下图所示:
![](http://img.blog.csdn.net/20170524202345434?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjgxMTA3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
现在我们能够将这张表进行操作,比如使用setId_P(“5”),即可以设置Id_P字段的值,使用getId_P(),可以获得当前对象的值。所以我们需要建立model对象,在下面就是Person类,与表里的字段一一对应。
接下来实现如何连接MySQL数据库,先预定义数据库的基本信息服务器主机,用户名,密码,数据库名称,文件名称为db_config.php;
其次,连接数据库文件名称为db_connect.php;其代码如下所示:
现在我们使用ORM操作MySQL数据库,这也应该可以很好的理解ORM概念了。其文件名称为orm.php,代码如下:
下面我们就写一段代码去测试一下PHP对象对数据库的操作,需要在测试代码之前加一段注册给定的函数作为 __autoload 的实现 ,其代码是:
其测试代码名称为test.php,其代码如下所示:
上面的代码只是给简单的增删改查的演示,重点是理解ORM概念,以及用面向对象的思维方式来操作数据库的含义。
首先给出数据库里一张表的表结构,如下图所示:
现在我们能够将这张表进行操作,比如使用setId_P(“5”),即可以设置Id_P字段的值,使用getId_P(),可以获得当前对象的值。所以我们需要建立model对象,在下面就是Person类,与表里的字段一一对应。
<?php class Person{ public $Id_P; public $Lastname; public $Firstname; public $Address; public $City; function getTableNameBdd() { return 'persons'; } function setId_P($Id_P){ $this->Id_P=$Id_P; } function getId_P(){ return $this->Id_P; } function setLastName($Lastname){ $this->Lastname=$Lastname; } function getLastName(){ return $this->Lastname; } function setFirstName($Firstname){ $this->Firstname=$Firstname; } function getFirstName(){ return $this->Firstname; } function setAddress($Address){ $this->Address=$Address; } function getAddress(){ return $this->Address; } function setCity($City){ $this->City=$City; } function getCity(){ return $this->City; } } ?>
接下来实现如何连接MySQL数据库,先预定义数据库的基本信息服务器主机,用户名,密码,数据库名称,文件名称为db_config.php;
<?php define("DB_USER", "root"); define("DB_PASSWORD", ""); define("DB_DATABASE", "persondb"); define("DB_SERVER", "localhost"); ?>
其次,连接数据库文件名称为db_connect.php;其代码如下所示:
<?php function connect(){ require_once __DIR__.'/db_config.php'; global $con; $con=mysqli_connect(DB_SERVER,DB_USER,DB_PASSWORD) or die(mysqli_connect_error()); $db=mysqli_select_db($con,DB_DATABASE)or die(mysqli_error()); return $con; } function close(){ global $con; mysqli_close($con); } ?>
现在我们使用ORM操作MySQL数据库,这也应该可以很好的理解ORM概念了。其文件名称为orm.php,代码如下:
<?php require_once __DIR__.'/db_connect.php'; class orm{ private static $con = NULL; //链接数据库 public function getConnection(){ self::$con=connect(); return self::$con; } //获得一个表的所有列名 public function getColumns($tableName) { $sql = "show columns from ".$tableName; $columns = array(); if(self::$con!=null){ $rtn = mysqli_query(self::$con,$sql); while($rtn!==false&&($row=mysqli_fetch_array($rtn))!=null){ $columns[] = $row[0]; } } return $columns; } //从数据表中获取所有对象数据 public function getAll($object){ $tableName = $object->getTableNameBdd(); $columns=$this->getColumns($tableName); $sql = "SELECT * FROM `".$tableName."`"; if(self::$con!=null){ $rtn=mysqli_query(self::$con,$sql); $arr=array(); while ($rtn!=false&&($row=mysqli_fetch_array($rtn))) { $index=-1; $obj=new Person(); foreach ($columns as $key=>$column) { $obj->{"set".ucfirst($column)}($row[++$index]); } $arr[]=$obj; } return $arr; } mysqli_close(self::$con); } //向数据表中插入对象数据 public function save($object){ $tableName = $object->getTableNameBdd(); $columns=$this->getColumns($tableName); $tag=false; if (self::$con!=null) { $sql = "INSERT INTO `" . $tableName . "` ("; foreach ($columns as $key => $column) { $sql.= $column.","; } $sql=substr($sql,0,strlen($sql)-1).") values ("; foreach ($columns as $key => $column) { $value=$object->{"get".ucfirst($column)}(); $sql.="'".$value."',"; } $sql=substr($sql,0,strlen($sql)-1); $sql.=")"; mysqli_query(self::$con,$sql); $tag=true; mysqli_close(self::$con); } return $tag; } //修改数据表中的对象数据 public function update($object){ $tableName = $object->getTableNameBdd(); $columns=$this->getColumns($tableName); $tag=false; if (self::$con!=null) { $sql="UPDATE `".$tableName."`SET "; for ($i=0; $i<count($columns);$i++) { $column=$columns[$i]; $value=$object->{"get".ucfirst($columns[$i])}(); if ($value==null) { $sql.=$column."=null,"; }else{ $sql.=$column."='".$value."',"; } } $sql=substr($sql,0,strlen($sql)-1); $sql.= " where "; $tempColumn = $columns[0]; $tempValue = $object->{"get".ucfirst($columns[0])}(); $sql.= $tempColumn."=".$tempValue; mysqli_query(self::$con,$sql); $tag = true; mysqli_close(self::$con); } return $tag; } //删除数据表中的所有数据 public function deleteALL($object){ $tableName=$object->getTableNameBdd(); $tag=false; $sql="delete from".$tableName; if (self::$con!=null) { mysqli_query(self::$con,$sql); $tag=true; } return $tag; } } ?>
下面我们就写一段代码去测试一下PHP对象对数据库的操作,需要在测试代码之前加一段注册给定的函数作为 __autoload 的实现 ,其代码是:
<?php spl_autoload_register(function($class){ $name = str_replace('\\', '/', $class); require_once($name.'.php'); }); ?>
其测试代码名称为test.php,其代码如下所示:
<?php require_once('autoloader.php'); $orm = new Orm(); $orm->getConnection(); //查询Persons表中的所有数据 $person = new Person(); $personArr = $orm->getAll($person); //修改Persons表中的某一条数据 $person=new Person(); $person->setId_P("5"); $person->setLastName("ly"); $person->setFirstName("l"); $person->setAddress("js"); $person->setCity("nj"); $orm->save($person); $person->setId_P("5"); $person->setLastName("l"); $person->setFirstName("y"); $tag=$orm->update($person); //向Persons表中添加一条数据 $person=new Person(); $person->setId_P("6"); $person->setLastName("ly"); $person->setFirstName("l"); $person->setAddress("js"); $person->setCity("nj"); $orm->save($person); //删除Persons表中的所有数据 $person=new Person(); $orm->deleteALL($person); ?>
上面的代码只是给简单的增删改查的演示,重点是理解ORM概念,以及用面向对象的思维方式来操作数据库的含义。
相关文章推荐
- PHP ORM操作MySQL数据库
- PHP基于ORM方式操作MySQL数据库实例
- PHP ORM操作MySQL数据库
- PHP ORM操作MySQL数据库
- PHP操作Mysql数据库记录操作函数
- 关于PHP中操作MySQL数据库的一些要注意的问题
- php adodb操作mysql数据库
- [转]PHP中操作MySQL数据库的一些要注意的问题
- PHP读取,写入MYSQL数据库文件操作
- PHP操作MySql数据库表记录
- PHP操作Mysql数据库
- 关于PHP中操作MySQL数据库的一些要注意的问题
- PHP与MySQL数据库操作函数详解
- php连接mysql数据库的增删改查操作
- php如何连接MYSQL数据库并进行添加、修改、删除操作
- php中用于操作MySQL数据库的类
- php adodb操作mysql数据库
- 关于PHP中操作MySQL数据库的一些要注意的问题
- PHP操作mysql数据库简单示例
- php操作mysql数据库