2
$dsn="mysql://$db_username:$db_password@$db_hostname/$db_database";
global $mdb2;
$mdb2=MDB2::connect($dsn);
if (PEAR::isError($mdb2))
{
    die($mdb2->getMessage());
}

我这样做是为了连接到我的数据库,我把它放在一个名为 Connect.php 的单独 php 文件中,并在我的所有页面上都需要它。

但是,当我必须在函数内部查询时,我必须将 $mdb2 作为参数传递给函数吗?这是正确的方法吗。

此外,我正在编写一个将查询我的数据库的类。而且我不知道该怎么做(我不想将其作为论据传递)

我是否必须每次都重新建立连接(即编写连接函数)

你不能让连接持久化和全局化吗?

4

1 回答 1

2

您可以Connect.php在所有页面上要求您的文件,并且每个需要使用连接的函数都可以引用global变量$mdb2.

例如:

# In file Connect.php

<?php
$dsn="mysql://$db_username:$db_password@$db_hostname/$db_database";
$mdb2=MDB2::connect($dsn);
if (PEAR::isError($mdb2))
{
    die($mdb2->getMessage());
}


#In any other file

<?php
require_once "Connect.php";
getUser($id) {
    global $mdb2;
    $mdb2->query("SELECT ....");
}

其他解决方案是使用 aSingleton Class来访问数据库,以便有一个函数始终返回对$mdb2变量的引用。

当然,讨论数据库连接是全局还是单例?是值得一读的东西。

于 2011-06-08T22:03:05.433 回答