避免多次尝试mysql_connect

时间:2013-10-23 02:00:32

标签: php

文件: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吗?我不确定在第一页上创建对象后是否可以在不同页面上使用该对象。

2 个答案:

答案 0 :(得分:0)

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

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

    return $db;
}

答案 1 :(得分: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;
    }

在检查会话变量后立即将脚本包含在每个页面的顶部,以便进行连接。