header("Content-type: text/html; charset=utf-8"); 

    /**
* 初始化 pdo 对象实例
* @param bool $newinstance 是否要创建新实例
* @return object->PDO
*/
function pdo($newinstance = false){
global $_W;
if($newinstance) {
$host = 'localhost';
$dbname = 'pro';
$dsn = "mysql:host={$host};dbname={$dbname}";
$username = 'root';
$passwd = 'root';
$charset = 'UTF8';
//连接数据库
$db = new PDO($dsn, $username, $passwd);
$sql = "SET NAMES $charset;";
$db->exec($sql);
return $db;
} else {
if(empty($_W['pdo'])) {
$_W['pdo'] = $GLOBALS['pdo'] = pdo(true);
}
return $_W['pdo'];
}
} /**
* 执行一条非查询语句
*
* @param string $sql
* @param array or string $params
* @return mixed
* 成功返回受影响的行数
* 失败返回FALSE
*/
function pdo_query($sql, $params = array()) {
if (empty($params)) {
$result = pdo()->exec($sql);
return $result;
}
//echo $sql;
$statement = pdo()->prepare($sql);
$result = $statement->execute($params);
if (!$result) {
return false;
} else {
return $statement->rowCount();
}
} /**
* 执行SQL返回第一个字段
*
* @param string $sql
* @param array $params
* @param int $column 返回查询结果的某列,默认为第一列
* @return mixed
*/
function pdo_fetchcolumn($sql, $params = array(), $column = 0) {
$statement = pdo()->prepare($sql);
$result = $statement->execute($params);
if (!$result) {
return false;
} else {
return $statement->fetchColumn($column);
}
} /**
* 执行SQL返回第一行
*
* @param string $sql
* @param array $params
* @return mixed
*/
function pdo_fetch($sql, $params = array()) {
$statement = pdo()->prepare($sql);
$result = $statement->execute($params); if (!$result) {
return false;
} else {
return $statement->fetch(pdo::FETCH_ASSOC);
}
} /**
* 执行SQL返回全部记录
*
* @param string $sql
* @param array $params
* @return mixed
*/
function pdo_fetchall($sql, $params = array(), $keyfield = '') {
$statement = pdo()->prepare($sql);
$result = $statement->execute($params); if (!$result) {
return false;
} else {
if (empty($keyfield)) {
return $statement->fetchAll(pdo::FETCH_ASSOC);
} else {
$temp = $statement->fetchAll(pdo::FETCH_ASSOC);
$rs = array();
if (!empty($temp)) {
foreach ($temp as $key => &$row) {
if (isset($row[$keyfield])) {
$rs[$row[$keyfield]] = $row;
} else {
$rs[] = $row;
}
}
}
return $rs;
}
}
} /**
* 更新记录
*
* @param string $table
* @param array $data
* 要更新的数据数组
* array(
* '字段名' => '值'
* )
* @param array $params
* 更新条件
* array(
* '字段名' => '值'
* )
* @param string $gule
* 可以为AND OR
* @return mixed
*/
function pdo_update($table, $data = array(), $params = array(), $gule = 'AND') {
global $_W;
$fields = pdo_implode($data, ',');
$condition = pdo_implode($params, $gule);
$params = array_merge($fields['params'], $condition['params']);
$sql = "UPDATE $table SET {$fields['fields']}";
$sql .= $condition['fields'] ? ' WHERE '.$condition['fields'] : '';
return pdo_query($sql, $params);
} /**
* 删除记录
*
* @param string $table
* @param array $params
* 更新条件
* array(
* '字段名' => '值'
* )
* @param string $gule
* 可以为AND OR
* @return mixed
*/
function pdo_delete($table, $params = array(), $gule = 'AND') {
global $_W;
$condition = pdo_implode($params, $gule);
$sql = "DELETE FROM $table ";
$sql .= $condition['fields'] ? ' WHERE '.$condition['fields'] : '';
return pdo_query($sql, $condition['params']);
} /**
* 插入数据
*
* @param string $table
* @param array $data
* 要更新的数据数组
* array(
* '字段名' => '值'
* )
* @param boolean $replace
* 是否执行REPLACE INTO
* 默认为FALSE
* @return mixed
*/
function pdo_insert($table, $data = array(), $replace = FALSE) {
global $_W;
$cmd = $replace ? 'REPLACE INTO' : 'INSERT INTO';
$condition = pdo_implode($data, ',');
//echo "$cmd $table SET {$condition['fields']}";
//var_dump($condition['params']);
return pdo_query("$cmd $table SET {$condition['fields']}", $condition['params']);
} /**
* 返回lastInsertId
*
*/
function pdo_insertid() {
return pdo()->lastInsertId();
} /**
* 转换PDO的字段与参数列表
*
* @param array or string $params
* 可以是数组或字符串
* 是字符串直接返回
* @param string $glue
* 字段间的分隔符
* 可以为逗号(,)或是 AND OR 应对不同的SQL
* @return mixed
* array(
* 'fields' 字段列表或条件
* 'params' 参数列表
* )
*/
function pdo_implode($params, $glue = ',') {
$result = array('fields' => ' 1 ', 'params' => array());
$split = '';
if (!is_array($params)) {
$result['fields'] = $params;
return $result;
}
if (is_array($params)) {
$result['fields'] = '';
foreach ($params as $fields => $value) {
$result['fields'] .= $split . "`$fields` = :$fields";
$split = ' ' . $glue . ' ';
$result['params'][":$fields"] = is_null($value) ? '' : $value;
}
}
return $result;
} //标明回滚起始点
function pdo_begin(){
return pdo()->beginTransaction();
}
//标明回滚结束点,并执行SQL
function pdo_commit(){
return pdo()->commit();
}
//执行回滚
function pdo_back(){
return pdo()->rollBack();
}

PDO封装函数的更多相关文章

  1. Javascript:来一个AJAX封装函数

    前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...

  2. jQuery封装函数

    //1,插件命名:jQuery.插件名.js 为拉避免和其他库的冲突// //2,自定义插件尽量避免使用$ 如果非要使用$就一定要将jQuery传递进去,//写在最后加一个小括号写jquery ;结束 ...

  3. 浏览器兼容——DOM事件封装函数

    //封装函数var eventUtil={    //添加事件    addHandler:function(element,type,handler){        if(element.addE ...

  4. WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法

    原文:WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法 今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取 某部分的 ...

  5. Ajax封装函数笔记

    Ajax封装函数: function ajax(method, url, data, success) { //打开浏览器 //1.创建一个ajax对象 var xhr = null; try { x ...

  6. JS运动缓冲的封装函数

    之前经常写运动函数,要写好多好多,后来想办法封装起来.(运动缓冲). /* 物体多属性同时运动的函数 obj:运动的物体 oTarget:对象,属性名为运动的样式名,属性值为样式运动的终点值 rati ...

  7. js面向对象学习笔记(二):工厂方式:封装函数

    //工厂方式:封装函数function test(name) { var obj = new Object(); obj.name = name; obj.sayName = function () ...

  8. javascript封装函数入门

    封装函数的入门 一.使用函数有两步: 1.定义函数,又叫声明函数, 封装函数. 定义函数的三个要素:功能,参数,返回值. function 函数名(形参){ 函数代码 return 结果} //2.调 ...

  9. ajax请求封装函数

    写封装函数的套路 1.先写出这个函数原来的基本用法 2.写一个没有形参空函数,将上一步的代码直接作为函数体, 3.根据使用过程中,抽象出来需要变的东西作为形参 function ajax (metho ...

随机推荐

  1. 可以把一些常用的方法,写入js文件,引入html界面

    这样,可以在多处应用.更好一些.缺点是不够灵活. 优点是,一处修改,多处应用. 函数这东西,一般都是先加载的,之后就可以随便调用了. function delquestion(obj){ //conf ...

  2. Children of the Candy Corn (bfs+dfs)

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8120   Accepted: 3547 Description The c ...

  3. 【转】Java中本地时间的获取方法--不错

    原文网址:http://highforest.blog.51cto.com/125539/842496/ 熟悉Oracle数据库的人,应该知道:select to_char(sysdate,'yyyy ...

  4. 【转】Linux I2C设备驱动编写(二)

    原文网址:http://www.cnblogs.com/biglucky/p/4059582.html 在(一)中简述了Linux I2C子系统的三个主要成员i2c_adapter.i2c_drive ...

  5. Hot to get clicked cell column in DevExpress XtraGrid

    To accomplish this task, use the GridView.RowCellClickevent. Please note that this event will not fi ...

  6. 带您理解SQLSERVER是如何执行一个查询的

    原文地址:http://www.cnblogs.com/lyhabc/p/3367274.html 看这篇文章之前,阁下可以先看一下下面的文章 SQLSERVER独特的任务调度算法"SQLO ...

  7. nova-network创建初始化网络

    nova-network创建初始化网络

  8. cocos2dx lua binding ,cocos2dx 绑定lua测试

    前面2篇分别简单介绍 手动bind C++ 类和lua:http://blog.csdn.net/chenee543216/article/details/12074771 使用tolua++简化工作 ...

  9. MyBatis(3):SQL映射

    前面学习了config.xml,下面就要进入MyBatis的核心SQL映射了,第一篇文章的时候,student.xml里面是这么写的: 1 2 3 4 5 6 7 8 9 10 11 <?xml ...

  10. jsp servelet

    servlet是java web应用程序. 1.生命周期:init() .service().destroy()方法. 其中service()包括 doGet() .doPost()方法.默认为get ...