【发布时间】:2015-04-14 22:57:30
【问题描述】:
当我尝试在另一个类中获取函数的返回值时,我得到未定义的变量。 $dbh 为空
在我的入口点文件中,我实例化了一个 DB_Functions 对象:
require_once ('/DB_Functions.php');
$db = new DB_Functions();
这是在 DB_Function.php 文件中。
class DB_Functions {
private $db;
public $dbh;
//put your code here
// constructor
function __construct() {
require_once 'DB_Connect.php';
// connecting to database
$this->db = new DB_Connect();
$this->dbh = $this->db->connect();
}
}
然后我像这样使用 db 对象:
if ($db->isUserExisted($username)) {}....
错误在isUserExisted(...) 函数内部。第 89 行是 $statement = $dbh....:
public function isUserExisted($username) {
$statement = $dbh->prepare("SELECT username FROM users WHERE username = :username");
$statement->bindParam(':username', $username);
}
这是在实例化 PDO 对象并返回它的 DB_Connect.php 文件中
public function connect() {
require_once('config.php');
$dbh = new PDO('mysql:host=' . hostname . ';dbname=' . db_name, username, password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'Connected to database';
return $dbh;
}
错误是:
注意:未定义变量:dbh in D:\xampp\htdocs\pharm_project\DB_Functions.php 第 89 行
第 89 行是:
$statement = $dbh->prepare("SELECT username FROM users WHERE username = :用户名");
【问题讨论】:
-
我假设第一个文件是 pharm_project\DB_Functions? 89号线在哪里?抱歉所有问题,水晶球坏了。
-
在第 89 行我尝试使用 PDO 对象
-
所以 DB_Functions.php:89 是
$dbh = new PDO('mysql:host=' . hostname . ';dbname=' . db_name, username, password);? -
这是第 89 行----> $statement = $dbh->prepare("SELECT username FROM users WHERE username = :username");
-
你为什么不在你的问题中包含那些超级有用的信息?你需要把它,以及它周围的所有代码......