开发者社区> 问答> 正文

在课堂上使用PDO?mysql

我有一些类可以执行一些MySQL查询和准备好的语句。但是,我不知道如何在这些类中合并我的PDO对象。例如,我想做这样的事情:

dbh->prepare('SELECT * FROM table'); $this->dbh->execute(); } } ?> 不幸的是,它不起作用。有人可以建议一种优雅的方法吗?谢谢你的时间。抱歉,我是新手,如果您不清楚任何事情,请留下任何评论,我会尽力答复!

展开
收起
保持可爱mmm 2020-05-17 20:51:36 913 0
1 条回答
写回答
取消 提交回答
  • 您可以在实现单例模式的类中实例化与数据库的连接。连接将完成一次,所有其他对象/脚本都可以轻松访问该类。

    在下面的示例中,我使用称为“ Core”的类;

    class Core { public $dbh; // handle of the db connexion private static $instance;

    private function __construct()
    {
        // building data source name from config
        $dsn = 'pgsql:host=' . Config::read('db.host') .
               ';dbname='    . Config::read('db.basename') .
               ';port='      . Config::read('db.port') .
               ';connect_timeout=15';
        // getting DB user from config                
        $user = Config::read('db.user');
        // getting DB password from config                
        $password = Config::read('db.password');
    
        $this->dbh = new PDO($dsn, $user, $password);
    }
    
    public static function getInstance()
    {
        if (!isset(self::$instance))
        {
            $object = __CLASS__;
            self::$instance = new $object;
        }
        return self::$instance;
    }
    
    // others global functions
    

    } 该类从名为“ Config”的静态类中获取参数,您可以在其中存储配置:

    dbh->prepare($sql); $stmt->bindParam(':id', $this->id, PDO::PARAM_INT); if ($stmt->execute()) { $o = $stmt->fetch(PDO::FETCH_OBJ); // blablabla.... 如果您需要有关单例的更多信息,请查看PHP文档http://php.net/manual/en/language.oop5.patterns.php来源:stack overflow
    2020-05-17 20:56:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像