PDO封装函数
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封装函数的更多相关文章
- Javascript:来一个AJAX封装函数
前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...
- jQuery封装函数
//1,插件命名:jQuery.插件名.js 为拉避免和其他库的冲突// //2,自定义插件尽量避免使用$ 如果非要使用$就一定要将jQuery传递进去,//写在最后加一个小括号写jquery ;结束 ...
- 浏览器兼容——DOM事件封装函数
//封装函数var eventUtil={ //添加事件 addHandler:function(element,type,handler){ if(element.addE ...
- WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法
原文:WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法 今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取 某部分的 ...
- Ajax封装函数笔记
Ajax封装函数: function ajax(method, url, data, success) { //打开浏览器 //1.创建一个ajax对象 var xhr = null; try { x ...
- JS运动缓冲的封装函数
之前经常写运动函数,要写好多好多,后来想办法封装起来.(运动缓冲). /* 物体多属性同时运动的函数 obj:运动的物体 oTarget:对象,属性名为运动的样式名,属性值为样式运动的终点值 rati ...
- js面向对象学习笔记(二):工厂方式:封装函数
//工厂方式:封装函数function test(name) { var obj = new Object(); obj.name = name; obj.sayName = function () ...
- javascript封装函数入门
封装函数的入门 一.使用函数有两步: 1.定义函数,又叫声明函数, 封装函数. 定义函数的三个要素:功能,参数,返回值. function 函数名(形参){ 函数代码 return 结果} //2.调 ...
- ajax请求封装函数
写封装函数的套路 1.先写出这个函数原来的基本用法 2.写一个没有形参空函数,将上一步的代码直接作为函数体, 3.根据使用过程中,抽象出来需要变的东西作为形参 function ajax (metho ...
随机推荐
- [置顶] Guava学习之ArrayListMultimap
ArrayListMultimap类的继承关系如下图所示: Guava ArrayListMultimap List Multimap 是一个接口,继承自 Multimap 接口.ListMultim ...
- 7.5.1 Point-in-Time Recovery Using Event Times 使用Event Times 基于时间点恢复
7.5.1 Point-in-Time Recovery Using Event Times 使用Event Times 基于时间点恢复 表明开始和结束时间用于恢复, 指定 --start-datet ...
- 【HDOJ】1107 武林
简单模拟,题目数据太弱太弱了. /* 1107 */ #include <iostream> #include <cstdio> #include <cstring> ...
- 【模拟】XMU 1062 山东煎饼
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1062 题目大意: 已知金钱,和各面额钞票张数,问最少可以换成几张. 题目思路: [模拟 ...
- [C#错误] 未找到类型或命名空间名称" " (是否缺少 using 指令或程序集引用?)
现象:编译项目时提示未找到类型或命名空间名称" " (是否缺少 using 指令或程序集引用?)解决方法:如果是未找到类型,检查是否引用了类型所在的命名空间,使用using指令.如 ...
- HBase技术介绍
HBase简介 HBase - Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. HB ...
- 数组在C++和java中的区别
几乎所有的程序设计语言都支持数组.在C和C++中使用数组是很危险的.因为C和C++中的数组就是内存块.如果一个程序要访问其自身内存块之外的数组,或者在数组初始化之前使用它,都会产生难以预料的后果. j ...
- jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象。
jquery中有一个函数isEmptyObject()用来判断制定参数是否是一个空对象. 示例如下: function isEmptyObject(e) { var t; for (t in e) r ...
- 判断客户端浏览器是否安装了Flash插件
<script> /*检测浏览器是否安装了插件(在IE 中无效)*/ function hasPlugin(name){ name = name.toLowerCase(); for(va ...
- UVa 10617 Again Palindromes / 记忆化搜索
删除若干个字母后 剩下的是回文串 求有多少个 记忆化搜索 dp[i][j]表示i j 之间有多少个 其实递推也可以的 long long #include <stdio.h> #inclu ...