为PDO连接准备简单查询

时间:2015-04-12 09:14:48

标签: mysql json pdo

我想准备PDO语句并将结果转换为PHP中的JSON。我设法通过以下方法连接到数据库:

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时,我只收到OK消息,表示连接成功。这个查询代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

您的错误日志说了什么?从您的代码中,我可以告诉您$db不包含PDO对象,因为您不会在DB_CONNECT的构造函数中返回任何内容。因此,$dbDB_CONNECT类型的对象,而不是PDO类型的对象,因此没有prepare作为方法。

要快速修复,请更改

$db = new DB_CONNECT();

$db = DB_CONNECT::connect();

并使connect成为静态。