为 PDO 连接准备简单查询

Preparing simple query for PDO connection

我想准备 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 消息,即连接成功。该查询代码有什么问题?

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

要快速修复,请更改

$db = new DB_CONNECT();

$db = DB_CONNECT::connect();

并使 connect 静态化。