PDO代码和PHP未定义错误
发布时间:2020-12-13 17:23:35 所属栏目:PHP教程 来源:网络整理
导读:我有这个代码连接到数据库 class dbConn{public $dbname='database';private $dbhost='localhost';private $dbusername='username';private $dbpassword='password';protected static $db;private function __construct() {try {self::$db = new PDO('mysql:
我有这个代码连接到数据库
class dbConn{ public $dbname='database'; private $dbhost='localhost'; private $dbusername='username'; private $dbpassword='password'; protected static $db; private function __construct() { try { self::$db = new PDO('mysql:host='.$dbhost.';dbname='.$dbname,$dbusername,$dbpassword ); self::$db->setAttribute( PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo "Connection Error: " . $e->getMessage(); } } public static function getConnection() { if (!self::$db) { new dbConn(); } return self::$db; } } class Mysql{ function showTables(){ $db = dbConn::getConnection(); $query=$db->query("show tables"); $fetchArray = $query->fetchAll(PDO::FETCH_ASSOC); foreach($fetchArray as $index=>$val) { echo $val; } } } $obj=new Mysql; $obj->showTables(); 我面临的问题是,如果我直接将数据库登录详细信息用于pdo语句,如下所示: self::$db = new PDO( 'mysql:host=localhost;dbname=databasename','root','pass'); 我没有任何问题.但是,如果我像上面所说的那样使用变量并将值存储到它们中. Notice: Undefined variable: dbhost Notice: Undefined variable: dbname Notice: Undefined variable: dbusername Notice: Undefined variable: dbpassword 以下错误来了,另外在其他类中也无法连接到数据库. 谁能告诉我这个问题是什么? 解决方法
访问类属性时需要使用$this – $this是当前对象.
例: try { self::$db = new PDO('mysql:host='.$this->dbhost.';dbname='.$this->dbname,$this->dbusername,$this->dbpassword ); self::$db->setAttribute( PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo "Connection Error: " . $e->getMessage(); } 当你调用$dbhost时,你正在寻找当前范围内的变量,在本例中是构造函数.在这种情况下,$dbhost和$this-> dbhost是两个不同的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |