2015-04-12 95 views
0

我想準備PDO語句並將結果轉換爲PHP中的JSON。我設法通過下面的方法來連接數據庫:爲PDO連接準備簡單查詢

class DB_CONNECT { 

function __construct() { 
    $this->connect(); 
} 

function __destruct() { 
    $this->close(); 
} 

function connect() { 
    $root = getenv("DOCUMENT_ROOT"); 
    require_once ($root.'/db/db_config.php'); 

    try 
    { 
     $db = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_DATABASE.';charset=utf8;port='.DB_PORT, DB_USER, DB_PASSWORD); 
     $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     echo 'OK'; 
     return $db; 
    } 
    catch (PDOException $e) 
    { 
     print "Connection error!: " . $e->getMessage() . "<br/>"; 
     die(); 
    } 

} 

function close() { 

    $db = null; 
} 

PHP,我在那裏發表聲明如下:

$root = getenv("DOCUMENT_ROOT"); 
require_once ($root.'/db/db_connect.php'); 

$db = new DB_CONNECT(); 

$statement=$db->prepare("SELECT name, surname FROM lecturer"); 
$statement->execute(); 
$results=$statement->fetchAll(PDO::FETCH_ASSOC); 
echo json_encode($results); 

當我運行這個PHP,我只得到確定消息,該連接成功。那個查詢代碼有什麼問題?

回答

1

你的錯誤日誌說什麼?從你的代碼中,我可以告訴你$db不包含PDO對象,因爲你不會在DB_CONNECT的構造函數中返回任何東西。所以$dbDB_CONNECT類型的對象,而不是PDO類型,因此沒有prepare作爲方法。

快速修復,改變

$db = new DB_CONNECT(); 

$db = DB_CONNECT::connect(); 

,並connect靜態的。