PHP ORM操作MySQL数据库

先来说说ORM的事儿,ORM全称是Object Relational Mapping[对象关系映射],结合博文标题理解ORM就是把PHP对象映射成数据表里的记录,使用PHP语言完成MySQL数据库的操作,写代码是一种很好的理解原理和概念的方式。
首先给出数据库里一张表的表结构,如下图所示:


PHP ORM操作MySQL数据库_第1张图片
图片.png

这里写图片描述
现在我们能够将这张表进行操作,比如使用setId_P(“5”),即可以设置Id_P字段的值,使用getId_P(),可以获得当前对象的值。所以我们需要建立model对象,在下面就是Person类,与表里的字段一一对应。

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;


其次,连接数据库文件名称为db_connect.php;其代码如下所示:


现在我们使用ORM操作MySQL数据库,这也应该可以很好的理解ORM概念了。其文件名称为orm.php,代码如下:

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{"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 的实现 ,其代码是:


其测试代码名称为test.php,其代码如下所示:

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数据库)