加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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是两个不同的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读