文件: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吗?我不确定在第一页上创建对象后是否可以在不同页面上使用该对象。
答案 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;
}
在检查会话变量后立即将脚本包含在每个页面的顶部,以便进行连接。