0

文件:Config.php

<?php
    require 'inc.database.php';
    // Checking if there already a connection. If not then connect to the database.
    if(!$IsConnected){
        $Database = new Database();
        $Database->connect("localhost", "aih786_raheel", "raheel786",        "aih786_basicblog");
        $IsConnected = TRUE;
    }
    ?>

我在每个页面上都使用我的配置文件,因为在每个页面上我都需要有我的数据库对象。我想明确的是,通过这种方法,我可以避免多次尝试连接到数据库,因为一次又一次地建立相同的连接不是一个好习惯。

假设我有一个登录页面,这是我的 cms 的第一页。连接将在登录页面上打开,现在当我移动到 dashboard.php 页面时,我也需要此页面中的 config.php 文件......因此它不会再次创建连接和对象。

请告诉我这是实现我的目标的正确方法,并且它是否可以让我访问对象 $Database ?我不确定一旦在第一页上创建了该对象,我们是否可以在不同的页面上使用它。

4

2 回答 2

0

一个非常基本的方法是定义一个按需返回数据库连接的函数,例如:

function getDefaultDatabaseConnection()
{
    $db = new Database;
    $db->connect(...);

    return $db;
}
于 2013-10-23T02:22:18.070 回答
0

通常,我会尝试在每个需要它的页面加载时启动一个连接。如果我已经在 SESSION 变量中存储了适当的变量,那么通常不需要启动一个。

鉴于此,我认为将连接对象放在调用它的脚本末尾是正确的形式。

杰克是对的,我使用一个函数来启动连接。

function dbConnect_readOnly() {

$host="127.0.0.1";
$user="*********";
$password="********";
$dbname="**********";
try {
        $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
        $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    }  
catch(PDOException $e) {  
        echo "Unable to connect to database.";  
        file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
    }  
return $DBH;

}

并关闭:

function dbClose_connection($DBH) {
        $DBH = null;
    }

在检查会话变量之后,在需要连接的每个页面的顶部包含脚本。

于 2013-10-23T03:16:17.380 回答