我想准备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消息,表示连接成功。这个查询代码出了什么问题?
答案 0 :(得分:1)
您的错误日志说了什么?从您的代码中,我可以告诉您$db
不包含PDO
对象,因为您不会在DB_CONNECT
的构造函数中返回任何内容。因此,$db
是DB_CONNECT
类型的对象,而不是PDO
类型的对象,因此没有prepare
作为方法。
要快速修复,请更改
$db = new DB_CONNECT();
到
$db = DB_CONNECT::connect();
并使connect
成为静态。