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. Local System、Local Service與Network Service

    CreateService参数介绍SC_HANDLE CreateService( SC_HANDLE hSCManager, //服务控制管理程序维护的登记数据库的句柄,由系统函数OpenSCMan ...

  2. android手机游戏开发Cocos2d-x开发分享

    我想现在应该没有人没有玩过手机游戏了吧,当然所有人都玩过,但不是所有人都知道怎么去开发手机游戏,因为许多人都感觉做开发是一件很困难的事儿,身边的朋友也对此感觉难度很大.但是,现在我可以告诉你,手机游戏 ...

  3. MyEclipse10 中增加svn插件

    http://www.cnblogs.com/bluesky4485/archive/2012/04/23/2467177.html 确实这种方法可行!向牛人学习!

  4. STL——heap的4大操作

    STL的堆操作 STL里面的堆操作一般用到的只有4个:make_heap();.pop_heap();.push_heap();.sort_heap(); 他们的头文件函数是#include < ...

  5. puppet report import

    把Puppet报告导入Puppet Dashboard 现在Dashboard正在运行,而我们需要确保它能够获取Puppet报告.完成这项工作有几种方法,开始的时候都是用Rake任务导入旧报告.在/u ...

  6. Java中List转换为数组,数组转List

    今天写代码遇到一个奇怪的问题,具体代码不贴出了,写一个简化的版本.如下: ArrayList<String> list=new ArrayList<String>();     ...

  7. ubuntu14.04 制作U盘启动文件

    1.制作U盘启动文件 网上搜索:U盘安装Ubuntu 12.10 图文教程(ultraiso) http://www.jb51.net/os/94398.html 2. 重启,按Del(或F2)进BI ...

  8. css 改变scroll样式

    /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ ::-webkit-scrollbar { width: 16px; height: 16px; background-color: #F5 ...

  9. SKPhysicsJointLimit类

    继承自 NSObject 符合 NSCoding(SKPhysicsJoint)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit. ...

  10. java环境下的数据库读写分离

    方案很多:阿里的中间件cobar.aop注解方式.com.mysql.jdbc.ReplicationDriver读写分离驱动MySQL数据库的同步. MySQL是开源的关系型数据库系统.主从同步复制 ...