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

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(); } } }


相关文章:
MySQL数据库操作类(PHP编写)(PDO).doc
MySQL数据库操作类(PHP编写)(PDO) - 数据库操作类(增、删、改、查
php中PDO方式实现数据库的增删改查.pdf
phpPDO方式实现数据库的增删改查 - phpPDO方式实现数据库的增删改查 PDOmysql数据库操作的一个公用类了,我们不需要进行自定类就可以直接使用pdo操作数据...
PHP使用PDO方式操作Mysql类.doc
PHP使用PDO方式操作Mysql类 - <?php /** * PDO 方式操作数据库 * @author tian * */ class MysqlPDO { private $pdo; /...
Php中使用PDO操作MySQL数据库(查询 更新 删除).doc
Php使用PDO操作MySQL数据库(查询 更新 删除) PDOmysql数据库操作的一个公用类了, 我们不需要进行自定类就可以直接使用pdo来操作 数据库了,但是在php默认配置...
...韩顺平 php核心课程 12(使用php对mysql数据库进行操....ppt
传智播客 韩顺平 php核心课程 12(使用phpmysql数据库进行操作的三种方式mysql mysqli pdo) - 高级软件人才实作培训专家! php进阶-数据库编程(mysql m...
第1章 PHP操作数据库_图文.ppt
第1章 PHP操作数据库 - 让IT教学更简单,让IT学习更有效 第一章 PHP操作数据库 PHP访问数据库步骤 mysql扩展 mysqli扩展 PDO扩展 ? 学习目标 1 掌握PH...
PDOMySQLDriver类使用方法.doc
PDOMySQLDriver类使用方法_计算机软件及应用_IT/...年我就开始写这个 PHP 类库了,平时在工作中,将...如果是类似向数据库中导入信息的操作, 还是关掉吧!...
PHP+Mysql+Dreamweaver网站开发与实践第5章02 PDO数据....ppt
PHP+Mysql+Dreamweaver网站开发与实践第5章02 PDO数据库抽象层_计算机软件及应用...该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同 的方法名,...
学PHP之PDO基础操作.doc
学PHP 之 PDO 基础操作 PDO(php data object)扩展...mysql、postgresql、oracle、mssql 等多种数据库 ...表字段字符的大小写转: PDO::ATTR_CONNECTION_STATUS...
第12章php中的pdo_图文.pdf
第12章php中的pdo - 第十二章 PDO ? 我们的程序可移植性如何? 程序 ? 数据库 ? PHP程序中操作数据库的函数。 ? 解决方案:写抽象的数据库操作 PHP mysql_...
PHP-Mysql知识总结_图文.doc
PHP 支持哪些数据库 PHP 通过安装相应的扩展来实现数据库操作,现代应用程序的...PDO($dsn, $user, $password); 连接 MySQL 数据库 PHP 要对数据库进行操作...
PDO数据库.txt
第三步 PHPPDOStatment类通知mysql执行sql语句 execute() 功能:PDOStatment类...应用PDO进行数据库操作,在数据库表中插入一条数据,根据查询的结果判断查询是否...
PHP 7从入门到精通(视频教学版)全文阅读_PHP 7从入门到....txt
PHP与Web页面交互、文件与目录操作、图形图像处理、Cookie和会话管理、MySQL数据库基础、PHP操作MySQL数据库PDO数据库抽象类库、JavaScript编程基础、PHP与XML技术、...
第3章 PHP操作数据库_图文.ppt
数据库,用于指定字符集和要操 作数据库 (6)编写SQL查询语句,并使用mysql...需要开启时,在php.ini配置文件中找到 ;extension=php_pdo_mysql.dll ? 去掉...
第1章 PHP操作数据库_图文.ppt
第1章 PHP操作数据库 - 让IT教学更简单,让IT学习更有效 第一章 PHP 操作数据库 ? PHP访问数据库步骤 ? mysqli扩展 ? mysql扩展 ? PDO扩展 ? 目录 ...
PHP5中使用PDO连接数据库的方法_php技巧_脚本之家_图文.pdf
PHP5中使用PDO连接数据库的方法_php技巧_脚本之家_计算机软件及应用_IT/计算机...MySQL 开发的 8 个技巧 php实现多张图片上传加水印技巧 zen cart新进商品的...
第10章 PDO方式访问数据库.ppt
例如: [PHP_PDO_MYSQL] extension=php_pdo_mysql.dll [PHP_PDO_ODBC] ...就可以在编程使用它来访问数据库了,对于PDO来说, 访问不同数据库的接口是...
第十四讲 pdo讲义_图文.ppt
PDO扩展提供PHP内置类 来对数据库进行访问,不同 数据库使用相同的方法名,解决...例如,PDO_OCI 扩展会替 代 PDO 扩展实现 Oracle 数据库 API。还有用于 MySQL...
PHP使用PDO教程.doc
数据库,将把所有的数据库扩展移到了 PECL,那么默认就是没有了我 们喜爱的 php_mysql.dll 之类的了,那怎么办捏,我们只有与时俱进了,我就小试了一把 PDO。...
PHP应用开发与实践第16章 PDO数据库抽象层_图文.ppt
该扩展提供PHP内 置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,...例如,PDO_MySQL扩展会替代PDO扩展实现MySQL数据库API。还有一些用于 Oracle、...
更多相关文章: