[share]PDO操作MySql类
为了让自己的数据类能够做到最大化的重用,就写个能够重用的PDO操作MySql的类:
由于pdo可以连接现在流行的各种数据库,所以单独的写个配置类类来完成不同数据库DSN的配置:
<?php
/*** 类标准说明 PDO连接数据库的配置类* 类名: ConfigDataBase* 功能说明: 为了让代码重用,利用此类可以动态的连接各种数据库* 参数说明: $_dbms = "mysql"; //数据库类型 * $_host = '127.0.0.1'; //数据库ip地址* $_port = '3306'; //数据库端口* $_username = 'root'; //数据库用户名* $_password = 'liujijun'; //密码* $_dbname = 'zendf'; //数据库名 默认为zenf* $_charset = 'utf-8'; //数据库字符编码* $_dsn;// //data soruce name 数据源*** 类属性说明:* 类方法说明:* 返回值: 不同函数返回不同的值* 备注说明:* 作者: 刘纪君* 最后一次修改时间: 2011下午02:01:39**/
class ConfigDataBase {protected static $_dbms = "mysql"; //数据库类型 protected static $_host = '127.0.0.1'; //数据库ip地址protected static $_port = '3306'; //数据库端口protected static $_username = 'root'; //数据库用户名protected static $_password = 'liujijun'; //密码protected static $_dbname = 'zendf'; //数据库名 默认为zenfprotected static $_charset = 'utf-8'; //数据库字符编码protected static $_dsn;// //data soruce name 数据源/***@return 返回数据源名*/public static function getDsn() {//将变量的值组合成 mysql:host=localhost;port =3306;dbname=test',$login,$passwd的形式if (!isset(self::$_dsn)){self::$_dsn = self::$_dbms.':host = '.self::$_host.';prot = '.self::$_port . ';dbname = ' . self::$_dbname.','.self::$_username . ','.self::$_password;if (strlen(self::$_charset) > 0){self::$_dsn = self::$_dsn . ';charset = ' . self::$_charset;}}return self::$_dsn;//返回数据源名}/*** 功能:设置$dbms* @param $dbms*/public static function setDbms($dbms){if (isset($dbms) &&(strlen($dbms) > 0 )){self::$_dbms = trim($dbms);} }/**** @param $host //数据库地址*/public static function setHost($host){if (isset($host) &&(strlen($host) > 0 )){self::$_host = trim($host);}}/**** @param $host 端口号*/public static function setPort($port){if (isset($port) &&(strlen($port) > 0 )){self::$_post = trim($port);}}/**** @param $passwd 密码*/public static function setPasswd($passwd){if (isset($passwd) &&(strlen($passwd) > 0 )){self::$_password = trim($passwd);}}/**** @param $username 用户名*/public static function setUsernName($username){if (isset($username) &&(strlen($username) > 0 )){self::$_username = trim($username);}}/**** @param $dbname 数据库名*/public static function setDbName($dbname){if (isset($dbname) &&(strlen($dbname) > 0 )){self::$_dbname = trim($dbname);}}/**** @param $charset 数据库编码*/public static function setCharset($charset){if (isset($charset) &&(strlen($charset) > 0 )){self::$_charset = trim($charset);}}
}下面是对数据库的操作:<?phprequire_once 'ConfigDataBase.php';
header("Content-Type: text/html; charset=utf-8");//设置编码
/*** 类标准说明* 类名: PdoMysql* 功能说明: 对数据库进行各种操作* 参数说明:* 类属性说明:* 类方法说明:* 返回值:* 备注说明:* 作者: 刘纪君* 最后一次修改时间: 2011上午10:45:36**/
class PdoMysqlOperater{/*** @return 返回连接数据库的句柄*/public function getConnection(){$connection = NULL;try {$connection = new PDO(ConfigDataBase::getDsn());echo 'Success';} catch (PDOException $e) {print "Error in connection :".$e->getMessage().' '.die();}return $connection;}/**** @param $connection 连接数据库的句柄*/public function closeConnection($connection){try {if ($connection != null) {$connection = null;//关闭数据库连接句柄}} catch (Exception $e) {print 'Close the connectin is error:'.$e->getMessage();}}/*** 功能: 向数据库中增加数据* @param $sql sql语句*/public function insertDatabase($sql){$affect = false;//失败返回falsetry {$conn = $this->getConnection();$conn->exec($sql);$affect = true;//插入成功返回true$this->closeConnection($conn);//关闭数据库} catch (PDOException $e) {print 'Insert error '.$e->getMessage();}return $affect;//返回值}/**** @param $id 表的主键id* @param $tableName 表名*/public function deleltById($id,$tableName){$affact = false;$sql = 'delete from '.trim($tableName).' where id = '.$id;try {$conn = $this->getConnection();$conn->exec($sql);$this->closeConnection($conn);$affact = true;} catch (PDOException $e) {print 'Delelte error is '.$e->getMessage();}return $affact;}/*** 功能: 以and 的形式删除记录* @param $tableName 表的名称* @param $array 数组表中字段名=其值的方式进行组合*/public function prepareDeleteAnd($tableName,array $array=null){$sql = 'delete from '. $tableName . ' where ';$count = count($array);//计算数组的长度$flag = 0;//设置标记foreach ($array as $key => $value){$flag++;//让flag增加一$sql .= $key .'='."'".$value."'";if ($flag != $count ){//当falg不等于count时,数组还有值,后面增加and,反之不增加$sql .= ' and ';}}echo $sql;//测试sql语句的组合 try {$conn = $this->getConnection();//获取连接$conn->prepare($sql);$this->closeConnection();} catch (PDOException $e) {print 'Delete error is '.$e->getMessage();}}/*** 功能: 以or 的形式删除记录* @param $tableName 表的名称* @param $array 数组表中字段名=其值的方式进行组合*/public function prepareDeleteOr($tableName,array $array=null){$sql = 'delete from '. $tableName . ' where ';$count = count($array);//计算数组的长度$flag = 0;//设置标记foreach ($array as $key => $value){$flag++;//让flag增加一$sql .= $key .'='."'".$value."'";if ($flag != $count ){//当falg不等于count时,数组还有值,后面增加and,反之不增加$sql .= ' or ';}}echo $sql;//测试sql语句的组合 try {$conn = $this->getConnection();//获取连接$stmt = $conn->prepare($sql);$stmt->execute();//执行$this->closeConnection();} catch (PDOException $e) {print 'Delete error is '.$e->getMessage();}}/*** 功能: 取得表中所有数据* @param $sql sql语句*/public function getAll($sql){$result = null;try {$conn = $this->getConnection();$result = $conn->query($sql);$this->closeConnection($conn);} catch (PDOException $e) {print 'GetAll error is '.$e->getMessage();}}/*** 功能:更新数据表中的信息* @param $table 要更新的表名* @param array $updateFiled 要更新的字段* @param array $updateConditon 更新需要的条件*/public function updateDataBase($table,array $updateFiled,array $updateConditon ){$sql = 'update from ' .$table .' set ';//对set字段进行赋值操作$count = count($updateFiled);//获取要修改数组的长度$flag = 0;//设置标记为0foreach ($updateFiled as $key => $value){$flag++;$sql .= $key .'='."'".$value."'";if ($flag != $count){$sql .=',';}}//对where条件进行赋值$countUpdateCondition = count($updateConditon);//获取要修改数组的长度$flag = 0;//设置标记为0$sql .= ' where ';foreach ($updateConditon as $key => $value){$flag++;$sql .= $key .'='."'".$value."'";if ($flag != $countUpdateCondition){$sql .=' and ';}}try {$conn = $this->getConnection();$conn->exec($sql);$this->closeConnection($conn);} catch (PDOException $e) {print 'Update error is :'.$e->getMessage();}}/*** 功能: 根据表和提高的查询条件进行查询* 返回值: 返回结果集* @param $table 数据表名* @param array $findCondition 查询条件*/public function findData($table,array $findCondition){$sql = 'select from '.$table .' where ';$count = count($findCondition);//获取查询条件数组的长度$flag = 0;//设置标记为0foreach ($findCondition as $key => $value){$flag++;$sql .= $key .'='."'".$value."'";if ($flag != $count){$sql .=' and ';}}try {$conn = $this->getConnection();$conn->exec($sql);$this->closeConnection($conn);} catch (PDOException $e) {print 'find error is :'.$e->getMessage();}}
}
//测试$db = new PdoMysqlOperater();
$db->findData('liujijun',array('name'=>'liujijun','name1'=>'liujijun'));
转载于:https://www.cnblogs.com/c3055/archive/2011/08/24/2152275.html
[share]PDO操作MySql类相关推荐
- php使用pdo操作mysql数据库实例_php使用PDO操作MySQL数据库实例_PHP
本文实例讲述了php使用PDO操作MySQL数据库的方法.分享给大家供大家参考.具体分析如下: PDO是mysql数据库操作的一个公用类,我们不需要进行自定类就可以直接使用pdo来操作数据库,但是在p ...
- php使用pdo操作mysql数据库实例_php5使用pdo连接数据库实例
本文为大家介绍下php pdo的用法. 一,pdo简介 pdo(php data object) 是php 5 中加入的东西,是php 5新加入的一个重大功能,因为在php 5以前的php4/php3 ...
- PDO操作MYSQL
<?php//PDO操作mysql数据库 增删改查//1.准备dsn$mysql_dsn="mysql:host=localhost;dbname=cz;charset=utf8&qu ...
- php类模块引擎PDO操作MySQL数据库简单阐述
PDO是什么呢? 通俗说就是别人写的一个"数据库操作工具类",它非常强大,可以应对市面上几乎所有主流数据库, 具体应用时候有这样一个关系: 即,要操作某种数据,就得去"打 ...
- php pdo模仿mysql函数_GitHub - frankie-huang/PDO_MYSQL_MODEL: PHP/PDO操作MySQL行为封装(使用语法仿TP3)...
PDO_MYSQL_MODEL 文档 更新注记 2017.9.23更新 仿ThinkPHP3.2.3的模型用法进行开发,支持其大部分语法 使用prepare+execute对SQL操作进行预处理,参数 ...
- pdo mysql 建库_一帖让PHP小白彻底了解PDO操作数据库的方法
php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) .在这三种方法中,"民间"很多是倾向于使用PDO, ...
- pdo mysql防注入_Php中用PDO查询Mysql来避免SQL注入风险的方法
当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_ ...
- pdo连接mysql数据库(简洁明了)
一 实例化pdo对象 $dsn = "mysql:dbname=test;host=127.0.0.1"; $pdo = new PDO($dsn,'root','root'); ...
- mysql pdo 安全_使用PDO查询Mysql来避免SQL注入风险
当 我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失 去控制.虽然可以用mysql_real_escap ...
最新文章
- 目标检测- YOLO v1--You Only Look Once
- 在Android中实现监听 返回键,主键,菜单键
- MySQL5.7 版本的安装、配置
- OS--进程间通信详解(一)
- 给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)
- c语言源程序文件.c如何保存,急求如何将下列C语言程序数据存储到文件中?
- WORD如何将多文档快速汇总到一份WORD文件里面?
- java调用libreoffice_使用Open / LibreOffice开始使用UNO和Java
- 如何开发油猴脚本来block掘金用户
- 变分模态分解 python_Variational Mode Decomposition (变分模态分解)
- 纯电动两档箱实际项目模型,本模型基于Cruise软件和搭建完成,本资料包包含所有源文件
- ps导出切片批量改名
- 运营进阶:产品运营画布九要素
- 电脑excel合并单元格怎么拆分开来
- 【数据分析可视化】股票市场分析实战之风险分析
- 全新的3D采样捕捉工具:Substance 3D Sampler(Sa) mac中文版
- 2013NET笔试题及答案
- 满爷的2019年终总结: 趋势、反思及展望
- 【Docker系列】docker manifest
- h5 微信分享和踩坑指南