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();
}
上一篇:体验CSDN-Markdown


下一篇:ABAP其实也是挺好的语言