码迷,mamicode.com
首页 > 其他好文 > 详细

PDO

时间:2017-07-30 11:38:18      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:自己   ted   自身   char   驱动   prot   数据库服务   int   ntb   

PHP 数据对象PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。

PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。

 

 

<?php

/**
* 我自己封装的PDO操作类
* User: fu
* Date: 2017/7/26
* Time: 14:42
*/
class MyPDO
{
protected $pdo;

function __construct()
{
if(file_exists(‘db.ini‘)){
$arr = parse_ini_file(‘db.ini‘);
}else{
exit(‘没有找到对应的配置信息文件...‘);
}

$dbh = "{$arr[‘dbms‘]}:host={$arr[‘host‘]};port={$arr[‘port‘]};dbname={$arr[‘dbname‘]};charset={$arr[‘charset‘]}";
$user = $arr[‘user‘];
$pwd = $arr[‘password‘];
$this->pdo = new PDO($dbh, $user, $pwd);
}

function __destruct()
{
$this->pdo = null;
}

/**
* 执行DML语句并返回受到影响的行数
* @param $sql 需要执行的SQL语句
* @return int 执行后返回受影响的行数(整数类型)
*/
public function execDML($sql){
return $this->pdo->exec($sql);
}

/**
* 查询并返回转换后的结果集合为数组
* @param $sql 需要执行的SQL语句
* @param int $var 指代返回数组的下标模式(PDO::FETCH_BOTH[默认],PDO::FETCH_NUM,PDO::FETCH_ASSOC)
* @return array 返回结果集数组,如果没有查询结果则返回一个空数组
*/
public function arrayByQuery($sql, $var=PDO::FETCH_BOTH){
$ps = $this->pdo->query($sql, $var);
if($ps)
return $ps->fetchAll();
return array();
}

/**
* 查询并返回转换后的结果集合为对象数组
* @param $sql 需要执行的SQL语句
* @param string $className 需要对应的类名,如果没有写则用默认值stdClass
* @return array 返回结果集对象数组,如果没有查询结果则返回一个空数组
*/
public function objectByQuery($sql, $className=‘stdClass‘){
$ps = $this->pdo->query($sql);
$arr = array();
if($ps){
while ($info=$ps->fetchObject($className))
array_push($arr, $info);
}
return $arr;
}

/**
* 使用预编译语句获取DML操作后的受影响的行数
* @param $sql 需要执行的SQL语句
* @param array $arr 执行语句需要的参数值
* @return int 执行DML后受影响的行数
*/
public function intByPrepare($sql,array $arr=array()){
$ps = $this->pdo->prepare($sql);
$ps->execute($arr);
return $ps->rowCount();
}
/**
* 使用预编译语句获取查询后的数组集合结果
* @param $sql 需要执行的SQL语句
* @param array $arr 执行语句需要的参数值
* @return array 语句执行后返回的数组
*/
public function arrayByPrepare($sql,array $arr=array()){
$ps = $this->pdo->prepare($sql);
$ps->execute($arr);
return $ps->fetchAll();
}

/**
* 使用预编译语句获取查询后的对象数组集合结果
* @param $sql 需要执行的SQL语句
* @param array $arr 执行语句需要的参数值
* @param string $className 需要对应的类名,如果没有写则用默认值stdClass
* @return array 语句执行后返回的对象数组
*/
public function objectByPrepare($sql, $arr=array(), $className=‘stdClass‘){
if(!is_array($arr)){
echo ‘第二个参数必须是数组类型<br>‘;
return array();
}
$ps = $this->pdo->prepare($sql);
$ps->execute($arr);
$infos = array();
while ($info=$ps->fetchObject($className))
array_push($infos, $info);
return $infos;
}

}

PDO

标签:自己   ted   自身   char   驱动   prot   数据库服务   int   ntb   

原文地址:http://www.cnblogs.com/zy9731/p/7258283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!