php - PDO 代码和 PHP 未定义错误

标签 php mysql pdo

我有这段代码连接到数据库

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 在这种情况下是两个不同的东西。

关于php - PDO 代码和 PHP 未定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415694/

相关文章:

php - 数据库变化检测

Mysql效率场景

php - 使用 GET 执行数据库操作的快速、简单且安全的方法

php - 使用 PDO/MySQL 准备语句的表名作为参数

php - MySQL有两个不同的密码?

php - 基于 ID 填充选择框 - PHP

php - 连接查询 - 避免 "SET SQL_BIG_SELECTS=1"和超时

php - 不在 mysql 中显示特定的 id

php - PDO 获取 id 不等于数组的数据

php - MySQL 使用 PDO 从 SELECT 插入