pdo-mysql类_[share]PDO操作MySql类

转载自 分享

为了让自己的数据类能够做到最大化的重用,就写个能够重用的PDO操作MySql的类:

由于pdo可以连接现在流行的各种数据库,所以单独的写个配置类类来完成不同数据库DSN的配置:

/**

* 类标准说明 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'; //数据库名 默认为zenf

protected 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);

}

}

}

下面是对数据库的操作:

require_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;//失败返回false

try {

$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;//设置标记为0

foreach ($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;//设置标记为0

foreach ($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'));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值