资讯专栏INFORMATION COLUMN

pdo 操作类

enali / 1334人阅读

摘要:代码示例上午构造方法输出错误信息单例模式防止克隆调试方法执行语句捕获错误消息循环引用目录当中的文件加载所有,以便启动所有服务

1.代码示例

dsn = "mysql:host=".$dbHost.";dbname=".$dbName;
            $this->dbn = new PDO($this->dsn, $dbUser, $dbPasswd);
            $this->dbn->exec("SET character_set_connection=".$charSet.", character_set_results=".$charSet."character_set_client=binary");
        }catch(PDOException $e){
           $this->outputError($e->getMessage());
        }
    }

    /**
     * 输出错误信息
     * @author mmy
     */
    private  function outputError($errorMessage)
    {
        throw new Exception("MySql Error:".$errorMessage);
    }

    /**
     * 单例模式
     * @author mmy
     * @ return obj
     */
    public static function getInstance($dbHost,$dbUser,$dbPasswd,$dbName,$charSet)
    {
        if(self::$_instance===null)
        {
            self::$_instance = new self($dbHost,$dbUser,$dbPasswd,$dbName,$charSet);
        }
        return self::$_instance;
    }

    /**
     * 防止克隆
     * @author mmy
     */
    private function __clone(){}

    /**
     * 调试方法
     * @author mmy
     */
    private function debug($debugInfo)
    {
        var_dump($debugInfo);
        exit();
    }

    /**
     * 执行sql语句
     * @author mmy
     *
     */
    public function execSql($sql, $debug=false)
    {
        if($debug===true)
        {
            $this->debug($sql);
        }
        $result = $this->dbn->exec($sql);
        $this->getPDOError();
        return $result;
    }

    /**
     * 捕获pdo错误消息
     * @author mmy
     */
    private function getPDOError()
    {
        if($this->dbn->errorCode() !="00000")
        {
            $arrayError = $this->dbn->errorInfo();
            $this->outputError($arrayError[2]);
        }
    }
}

循环引用目录当中的文件

// 加载所有Applications/*/start.php,以便启动所有服务
foreach(glob(__DIR__."/Applications/*/start*.php") as $start_file)
{
    require_once $start_file;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/46825.html

相关文章

  • PHP 数据库操作

    摘要:操作数据库的种形式使用扩展类库推荐使用扩展类库这是类库的升级版,但已经不推荐使用扩展包含哪三个类与区别可以支持多种数据库,而且操作方法一致只支持数据库如何使用连接数据库什么是如何关闭连接通过来连接数据库,其中必须传入数据源名称数据源名称是 PHP操作数据库的2种形式 使用 PDO 扩展类库(推荐) 使用 Mysqli 扩展类库(这是Mysql类库的升级版,但已经不推荐使用) PDO...

    Jingbin_ 评论0 收藏0
  • (唯一合适) PDO 教程

    摘要:是什么首先思考为什么选择是一个数据访问抽象层抽象是双重的一个是众所周知但不太重要的另一个是模糊的但是是最重要的众所周知为不同的数据库提供了统一的接口虽然这个功能本身很庞大但是对于固定程序来说不是过于重要的事情基本所有的程序都是使用统一的后端 PDO是什么 首先思考, 为什么选择PDO PDO 是一个数据访问抽象层(Database Access Abstraction Layer). ...

    sf190404 评论0 收藏0
  • 我感觉这是史上最牛的防sql注入方法

    摘要:早在年我就开始写这个类库了,平时在工作中,将一些好的想法,一些问题的解决方法等融合进来,历时两年多,经过不断的实践,我感觉它已经很成熟了,于是它来到了你面前我的仓库地址这里假设有一个数据表,其中为主键。 早在2015年我就开始写这个PHP类库了,平时在工作中,将一些好的想法,一些问题的解决方法等融合进来,历时两年多,经过不断的实践,我感觉它已经很成熟了,于是它来到了你面前! 我的仓库地...

    dockerclub 评论0 收藏0
  • 写一个“特殊”的查询构造器 - (七、DML 语句、事务)

    摘要:同样的,添加属性,修改函数构造语句的方法基类中添加方法检测有没有设置子句构建语句参数绑定返回影响的行数更新数据示例相比,语句更为简单,只需子句即可。 查询语句 (DQL) 的构造功能开发完毕,我们再给查询构造器增加一些对 DML (Data Manipulation Language) 语句的支持,如简单的 insert、update、delete 操作。 insert 我们先回顾下 ...

    lookSomeone 评论0 收藏0
  • Laravel 学习笔记之 Query Builder 源码解析(中)

    说明:本篇主要学习数据库连接阶段和编译SQL语句部分相关源码。实际上,上篇已经聊到Query Builder通过连接工厂类ConnectionFactory构造出了MySqlConnection实例(假设驱动driver是mysql),在该MySqlConnection中主要有三件利器:IlluminateDatabaseMysqlConnector;IlluminateDatabaseQuery...

    zhou_you 评论0 收藏0
  • PDO的使用

    具体参考《PHP核心技术与最佳实践》的5.1章 《什么是PDO》 1. PDO的介绍 PHP针对每种数据库都有一个独立的模块、一组独立的函数。这样的结构和设计让PHP兼容多种数据库变得困难。一旦要将一个应用移到另外一种数据库环境中,或者是需要添加新的数据库支持,就不得不重新编写和数据库相关的操作。通常编写多个类,用适配器模式来实现。在这个历史背景下PDO出现了。PDO(PHP Data Objec...

    vvpale 评论0 收藏0

发表评论

0条评论

enali

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<