我有一個數據庫包裝器和一個獲取PDO連接實例的靜態方法。但是,當我想進行PDO查詢時,我無法訪問它。PDO無法訪問數據庫連接實例
這裏是DB類的一部分:
class DB {
private static $_instance = null;
private $_pdo,
$_query,
$_error = false,
$_results,
$_count =0;
private function __construct() {
try {
$this->_pdo = new PDO('mysql:host='.Config::get('mysql/host').';dbname='.Config::get('mysql/db'),Config::get('mysql/username'),Config::get('mysql/password'));
} catch (PDOException $e) {
die($e->getMessage());
}
}
public static function getInstance() {
if(!isset(self::$_instance)) {
self::$_instance = new DB();
}
return self::$_instance;
}
在這裏,我的查詢:
$pdo = DB::getInstance();
$statement = $pdo->prepare("select surname from staff_info where fname = :name");
$statement->execute(array(':name' => Input::get('name')));
$total = $statement->rowCount();
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
echo $row['surname'].'</br>';
}
但是當我運行的查詢我收到此錯誤:
Fatal error: Call to undefined method DB::prepare()
我在做什麼錯了嗎?任何幫助?
但是這作品時,我做這樣
$dsn = 'mysql:host=localhost;dbname=cois';
$user = 'root';
$password = '';
$pdo = new PDO($dsn, $user, $password);
$filmName = "omar";
$statement = $pdo->prepare("select surname from staff_info where fname = :name");
$statement->execute(array(':name' => $filmName));
$total = $statement->rowCount();
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
echo $row['surname'].'</br>';
}
這怎麼可能?
哪裏是'上prepare'方法你的數據庫類? –
@chumkiu可能不在。因爲這是錯誤所說的。 –
你在$ this-> db變量上分配了pdo對象,並返回了$ _instance靜態變量作爲db對象,顯然你的$ _instance是空的 – Surace