PDO-Mysql数据库操作类

新手上路,请多包涵

1.mvc框架中,数据库操作类中出现报错,还有一个文件,代码和我这个文件都一样,为啥我这报错了。

<?php
class MySQLPDO{

//数据库默认连接信息
private $dbConfig = array(
        'db' => 'MYSQL',
        'host' => 'localhost',
        'port' => '3306',
        'user' => 'root',
        'pass' => 'root',
        'charset' => 'utf8',
        'dbname' => 'mvc_study',
    );
//单例模式,本类对象的引用
private static $instance;


//PDO实例
private $db;

//构造函数
private function __construct($params){
    $this->dbConfig = array_merge($this->dbConfig,$params);
    $this->connect();
}

//单例模式
public static function getInstance($params=array()){
    if(!self::$instance instanceof self){
        //注意new self()内加$params
        self::$instance = new self($params);
    }
    return self::$instance;
} 
//私有克隆
private function __clone(){}

//数据库连接
private function connect(){
    try{
        $dsn = "{$this->dbConfig['db']}:port={$this->dbConfig['port']};host={$this->dbConfig['host']};dbname={$this->dbConfig['dbname']};charset={$this->dbConfig['charset']}";
        $pdo = new PDO($dsn,$this->dbConfig['user'],$this->dbConfig['pass']);
        $pdo->query("set names {$this->dbConfig['charset']}"); 
    }catch(PDOException $e){
        $e->getMessage();
    }
}

//执行sql语句
public function query($sql){
    return $this->db->query($sql);
}

//取得一行结果
public function fetchRow($sql){
    return $this->query($sql)->fetch(PDO::FETCH_ASSOC);
}

//取得所有结果
public function fetchAll($sql){
    return $this->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}

}

?>

clipboard.png

问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.9k
2 个回答

代码中没有给db属性赋值

//数据库连接
private function connect(){
    try{
        $dsn = "{$this->dbConfig['db']}:port={$this->dbConfig['port']};host={$this->dbConfig['host']};dbname={$this->dbConfig['dbname']};charset={$this->dbConfig['charset']}";
        $pdo = new PDO($dsn,$this->dbConfig['user'],$this->dbConfig['pass']);
        $pdo->query("set names {$this->dbConfig['charset']}");
        
        # 加这一行
        $this->db = $pdo;
 
    }catch(PDOException $e){
        $e->getMessage();
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题