-1

我对 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。但我想以安全的方式进行。任何人都可以帮忙。

4

2 回答 2

1

最好为此使用单例。这样可以避免打开多个数据库连接:

<?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();

当然,您需要在每个页面中包含此文件/类。此外,硬编码您的数据库凭据不是一个好习惯。更好地从 some或.envfile加载。getenv().ini

于 2018-10-30T19:22:35.127 回答
0

将连接代码保存在文件中。我们称它为 db_connect.php。然后,使用正确的路径将以下内容添加到需要数据库连接的每个文件中:

include('path/to/db_connect.php');

您也可以使用include_once(),require()require_once()根据您的需要。

于 2018-10-30T19:30:49.580 回答