问题描述
我是OOP的新手,所以我试图学习如何创建类并使用它们.目前,我正在尝试从MySQL表中获取数据.
I am new to OOP, so I am trying to learn how to create classes and use them. Currently I am trying to fetch data from my MySQL table.
要创建与MySQL的连接,我正在使用PDO.我为数据库连接创建了一个单独的类.我已经在show.php文件中包含了该类.现在,我想从MySQL数据库中获取数据.问题是当我运行show.php文件时,它显示此错误消息
To create the connection with MySQL I am using PDO. I have created a separate class for database connection. I have included the class in my show.php file. Now I want to fetch data from MySQL database. The problem is when I run my show.php file it shows this error message
但是应该只显示array
.
该问题的解决方案是什么?
What is the solution to this problem?
<?php
class DBConnection {
function DBConnection(){
$host = 'localhost';
$dbname = 'srijon';
$user = 'root';
$pass = '';
try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $DBH;
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
} // function ends
} // class ends
?>
文件 show.php
<?php
require_once 'db.class.php';
function get_all(){
$db = new DBConnection();
$sql = "SELECT * FROM information";
$STH = $db->prepare($sql);
$STH->execute();
$STH->setFetchMode(PDO::FETCH_ASSOC);
return $STH;
}
echo get_all();
?>
推荐答案
恕我直言,您可以将PDO连接注入到需要它的函数中:
IMHO you can just inject the PDO connection into the functions that need it:
<?php
$dbHandle = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$dbHandle->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// always disable emulated prepared statement when using the MySQL driver
$dbHandle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
function get_all($dbHandle) {
$sql = "SELECT * FROM information";
$stmt = $dbHandle->prepare($sql);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt;
}
get_all($dbHandle);
如果您确实认为需要某种类来访问数据库(PDO除外)(不需要),则必须扩展PDO:
If you really think you need some class to access to database (other than PDO) (which you don't need) you would have to extend PDO:
<?php
class DBConnection extends PDO
{
public function __construct()
{
parent::__construct("mysql:host=$host;dbname=$dbname", $user, $pass);
$this->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// always disable emulated prepared statement when using the MySQL driver
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
}
$dbHandle = new DBConnection();
function get_all($dbHandle) {
$sql = "SELECT * FROM information";
$stmt = $dbHandle->prepare($sql);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt;
}
get_all($dbHandle);
这篇关于创建数据库连接类(PDO)并获取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!