我对PHP完全陌生。我正在创建一个网站。
在几页中,我从以下代码开始:
<?php
$dsn = "mysql:host=localhost;dbname=db;";
$options = [
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new PDO($dsn,'root','', $options);
} catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
//rest of the php + html code here
我想在一个php文件中统一此代码,并在每个页面中调用$ pdo。但是我想以安全的方式做到这一点。谁能帮忙。
答案 0 :(得分:1)
为此最好使用singleton。这样,您可以避免打开多个数据库连接:
<?php
class Database
{
public static $pdo;
public static function getPDO()
{
if (null === self::$pdo) {
$dsn = "mysql:host=localhost;dbname=db;";
$options = [
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
self::$pdo = new PDO($dsn,'root','', $options);
} catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
}
return self::$pdo;
}
//protected constructor
protected function __construct()
{
}
}
然后使用
require_once('path/to/database.php'); //the file with Database class
$pdo = Database::getPDO();
当然,您需要在每个页面中包含此文件/类。
另外,对数据库凭据进行硬编码也不是一个好习惯。更好地从某些.env
,getenv()
或.ini
文件中加载。
答案 1 :(得分:1)
将连接代码保存在文件中。我们称之为db_connect.php。然后,使用正确的路径将以下内容添加到需要数据库连接的每个文件中:
include('path/to/db_connect.php');
您还可以根据需要使用include_once()
,require()
或require_once()
。