我正在尝试从函数返回$ db连接,以便我可以在另一个函数中使用它。但有些函数不理解$ db变量。
function dbConnection(){
$dbhost = 'localhost';
$dbuser = '...';
$dbpass = '...';
$dbname = '...';
try {
$db = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=UTF8", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $db;
} catch (PDOException $e){
echo 'Connection failed: ' . $e->getMessage();
}
}
然后在我的所有功能中使用它。
function getCurrentFile(){
dbConnection();
$stmt = $db->prepare(...);
$stmt->execute();
}
是否有更好的方法来处理数据库连接?我以前每次都需要require_once config.php(其中只有数据库连接)文件,但我不想再这样做了。
答案 0 :(得分:1)
其中一个选项是定义提供数据库对象的单一类:
// File: DbConection.php
class DbConnection
{
/**
* @var \PDO
*/
private static $pdo;
private function __constructor()
{
}
public static function getInstance()
{
if(null === self::$pdo) {
self::$pdo = new \PDO('....);
}
return $self::pdo;
}
private function __clone()
{
}
private function __wakeup()
{
}
}
如果您使用的是composer工具,请将此行添加到composer.json文件中:
"autoload": {
"classmap": [
"path_to_your_file/DbConnection.php"
]
},
在你的项目中,on bootstrap include由composer vendor / autoload.php文件生成并开始使用class by:
use DbConnection;
DbConnection::getInstance();
在整个项目中。
答案 1 :(得分:0)
在类中记下您的数据库连接代码,并创建对象以用于系统中的其他任何位置。