zoukankan      html  css  js  c++  java
  • 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();
        }
    php资料
  • 相关阅读:
    如何选择机器学习算法 转
    机器学习经典算法详解及Python实现--基于SMO的SVM分类器
    机器学习(Machine Learning)&深度学习(Deep Learning)资料
    计算智能在设备状态维护中的应用
    LaTeX 在编译时出现 File ended while scanning use of @writefile错误
    LaTeX 中插入图片使其紧跟插入的文字之后
    LaTeX 制作表格
    LaTeX 中换段落
    LaTeX 中使用三级标题
    使用 WinEdt 来写中文文章or 建模论文
  • 原文地址:https://www.cnblogs.com/phpfensi/p/3835900.html
Copyright © 2011-2022 走看看