为 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 任何内容。所以 $db
是 DB_CONNECT
类型的对象,而不是 PDO
类型的对象,因此没有 prepare
作为方法。
要快速修复,请更改
$db = new DB_CONNECT();
至
$db = DB_CONNECT::connect();
并使 connect
静态化。
我想准备 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 任何内容。所以 $db
是 DB_CONNECT
类型的对象,而不是 PDO
类型的对象,因此没有 prepare
作为方法。
要快速修复,请更改
$db = new DB_CONNECT();
至
$db = DB_CONNECT::connect();
并使 connect
静态化。