当前位置:首页 >> 互联网 >>

MySQL数据库操作类(PHP编写)(PDO)


<?php /*************************************************/ /** 数据库操作类(增、删、改、查) **/ /** 使用 pdo 中的 stmt 类实现 **/ /** 只要创建对象,传入一个表名作为参数,就可以 **/ /** 对象中增、删、改、查的方法进行对表操作 **/ /** 问题 email:zql_0539@163.com **/ /*************************************************/ class DB{ private $tabName;//表名 private $pdo;//pdo 对象 private $fields;//表中的字段 function __construct($tabName){ $this->tabName=$tabName; try{ $this->pdo=new PDO("mysql:host=localhost;dbname=oop","root","111111"); $this->pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "数据库连接失败:".$e->getMessage(); } $this->fields=$this->getTab(); } //============获取表结构:所有字段名==============// function getTab(){ $result=$this->pdo->query("desc {$this->tabName}"); //执行 SQL 语句(desc) $fields=array(); foreach($result as $row){ 他字段用索引式存放 if($row["Key"]=="PRI"){ $fields["pri"]=$row["Field"]; }else{ $fields[]=$row["Field"]; } } return $fields; } //将表中的字段放到$fields 中, 其中主键用关联式存放, 其 //存放主键字段 //存放普通字段

//==============向数据库中插入数据===============// function insert($post=null){ try{ if(is_null($post)){ //判断传来的参数是否为空,若为空则用$_POST 赋值 $post=$_POST; } $fields=""; //INSERT 语句中的所有字段名 $zwf=""; //INSERT 语句中的占位符 $values=array(); //要想插入的数据所存放的数组 foreach($post as $key=>$val){ //遍历$post if(in_array($key,$this->fields)){ //判断数组中的键值是否在数组$this->fields 中,为真时执行 $fields.=$key.","; //拼装字段名

$zwf.=":".$key.","; $values[$key]=$val; } }

//拼装命名占位符 //将要插入的数据放入到数组中

$fields=rtrim($fields,","); //去掉字段名字符串右边的逗号(,) $zwf=rtrim($zwf,","); //去掉命名占位符字符串右边的逗号(,) $sql="INSERT INTO {$this->tabName}({$fields}) VALUES({$zwf})"; $stmt=$this->pdo->prepare($sql); if($stmt->execute($values)){ echo "添加成功!"; } }catch(PDOException $e){ echo $e->getMessage(); } } //==============删除记录方法===============// function delete($id){ try{ $values=array(); //参数数据所存放的数组 if(is_array($id)){ //如果参数是数组 $zwf=""; //DELETE 语句中的?占位符 foreach($id as $val){ //遍历参数数组 $values[]=$val; //参数数组中的每个数据放到$values 中 $zwf.="?,"; //拼装占位符 } $zwf=rtrim($zwf,","); //去掉?占位符字符串右边的逗号(,) $sql="DELETE FROM {$this->tabName} WHERE {$this->fields["pri"]} in({$zwf})"; }else{ $values[]=$id; //将参数存放到数组中 $sql="DELETE FROM {$this->tabName} WHERE {$this->fields["pri"]}=?"; } $stmt=$this->pdo->prepare($sql); if($stmt->execute($values)){ echo "删除成功!"; } }catch(PDOException $e){ echo $e->getMessage(); } } //==============更新表中的数据===============// function update($post){ try{ if(is_null($post)){ //判断传来的参数是否为空,若为空则用$_POST 赋值 $post=$_POST; } $pri=$post[$this->fields["pri"]]; //获取主键字段的值 unset($post[$this->fields["pri"]]); //在$post 数组中删除主键字段 $fields=""; //INSERT 语句中的所有字段名 //处理打算执行的 SQL 语句 //执行预处理的 SQL 语句,向服务器发送数据 //处理打算执行的 SQL 语句 //执行预处理的 SQL 语句,向服务器发送数据

$values=array(); foreach($post as $key=>$val){ if(in_array($key,$this->fields)){ $fields.=$key."=?,"; $values[]=$val; } }

//要更新的新数据所存放的数组 //遍历$post //判断数组中的键值是否在数组$this->fields 中,为真时执行 //拼装修改字段字符串 //将要插入的数据放入到数组中

$values[]=$pri; //将主键字段的值插入到数据数组的最后 $fields=rtrim($fields,","); //去掉更新数据指令字符串右边的逗号(,) $sql="UPDATE {$this->tabName} set $fields where {$this->fields["pri"]}=?"; $stmt=$this->pdo->prepare($sql); if($stmt->execute($values)){ echo "修改成功!"; } }catch(PDOException $e){ echo $e->getMessage(); } } //==============查询数据的方法===============// function comsql($arr,$args,$type){ try{ if(!empty($arr["field"])){ 赋给$fields $fields=$arr["field"]; }else{ $fields=implode(",",$this->fields); } if(!empty($arr["where"])){ $where=" WHERE ".$arr["where"]; //echo $where; }else{ $where=""; } //如果字段参数不为空, 则赋给$fields。 为空时, 拆分$this->fields //处理打算执行的 SQL 语句 //执行预处理的 SQL 语句,向服务器发送数据

//判断 where 条件是否为空,

if(!empty($arr["order"])){ //判断 order 排序是否为空 $order=" ORDER BY ".$arr["order"]; }else{ $order=" ORDER BY ".$this->fields["pri"]." ASC"; } if(!empty($arr["limit"])){ //判断 limit 是否为空 $limit=" LIMIT ".$arr["limit"]; }else{ $limit=""; } if($type){ 询元组 $sql="select count(*) as count from {$this->tabName}{$where}{$order}{$limit}"; }else{ $sql="select {$fields} from {$this->tabName}{$where}{$order}{$limit}"; //如果为 true,则运行统计要查询结果集的数目,若为 false,则查

} if($args){ $stmt=$this->pdo->prepare($sql); $stmt->execute($args); return $stmt; } }catch(PDOException $e){ echo $e->getMessage(); } } //==============查询记录===============// function select($arr=array(),$args=array()){ try{ $stmt=$this->comsql($arr,$args,false); $values=array(); //将结果集绑定到数组$values 中的成员上 for($i=0;$i<$stmt->columnCount();$i++){ $fieldinfo=$stmt->getColumnMeta($i); //获取各个字段的信息 $fields[$i]=$fieldinfo["name"]; //将各个字段的名称赋给数组$fields $stmt->bindColumn($fields[$i],$values[$fields[$i]]);//通过列名称绑定到数组$values 中的成员上 } while($stmt->fetch()){ //从结果集中获取数据(循环一次就将一条记录赋给 $values 数组,然后就$values 数组赋给$t 数组,这时$t 数组的下标是字段名,值是记录值。然后再将$t 数组赋 给$result,这样$result 中的每一个成员就是一个数组(一条记录)): $values["name]="zhangsan",$values["age"]=25...... $t=array(); foreach($values as $key=>$val){ $t[$key]=$val; } $result[]=$t; } return $result; }catch(PDOException $e){ echo $e->getMessage(); } } //=============查询记录的数目===============// function total($arr=array(),$args=array()){ try{ $stmt=$this->comsql($arr,$args,true); //调用 comsql()方法来统计要查询结果集的数目 $stmt->bindColumn("count",$count); //通过列名称绑定到变量$name 上 $stmt->fetch(); //获取数据 return $count; //输出数据 }catch(PDOException $e){ echo $e->getMessage(); } } }


赞助商链接
相关文章:
win+iis6+fastcgi+php5.4.8+mysql配置
(php5.3 以后的版本都需要环境支持)操作系统:Win ...最后一种是这台服务器上 面只跑 mysql 数据库,将...extension=php_pdo_mysql.dll extension=php_xmlrpc...
PHP到MySQL数据查询过程概述
PDO (PHP Data Object) 是另外一种面向数据对象的 扩展库。 这些扩展库直接面向编程者, 而它的底层实现mysql 连接引擎(如 mysqlnd 和 libmysql )(参考 ...
PDO 问题解决
php 5 个版本,5.2、5.3、5.4、5.5,怕跟不上时代,新的服务器直接上 5....说 mysql_connect 这个模块将在未来弃用,请你使用 mysqli 或者 PDO 来替代。 ...
pdo详解(中文教程)[免费]
pdo详解(中文教程)[免费] - PDO 使用归纳【PHP】[免费] 2010 年 02 月 27 日星期六 18:09 【任务】将 PDO 封装成类 new PDO(mysql:host=...
PHP+MySql+Apache简易环境搭建
extension=php_pdo_mysql.dll extension=php_pdo_...选择服务器类型,“Developer Machine(开发测试类,...匿名用户可以连接数据库, 不能操作数据,包括查询)”...
初识MySQL
MySQL5.5从零开始学作者授权,上传部分章节,供读者...上面简单列举了常用的数据库操作语句,在这里给读者一...4. PDO PDO(PHP Data Object )为 PHP 访问数据...
PHP核心知识要点
PHP核心知识要点 - 0 你 Mysql 扩展库,PHP 操作 mysql PHP 操作 mysql 数据库的主要扩展库:mysql(面向过程) ,mysqli(面向过程和对象) ,pdo (...
Centos7以上版本搭建Apache+PHP+Mysql+PhpMyAdmin环境搭建
php-mysql.x86_64 0:5.4.16-36.3.el7_2 Dependency Installed: php-pdo....安装完成以后使用下面的命令开启数据库服务: #启动 MariaDB [root@localhost ~]...
wamp服务器配置要求
Apache 数据库:Mysql 开发语言:PHP 支持库:vc_redist.x86(2015).exe 二、...“;”;extension=php_mysqli.dll 取掉前面的“;”;extension=php_pdo_mysql....
asterisk_mysql_freepbx_完整安装手册
php-pear php-pear-DB php-gd php-mysql php-pdo kernel-devel ncurses-...使用数据库保存Asterisk... 10页 免费 mysql数据库系统配置安装... 6页 免费...
更多相关文章: