检测是否已建立PDO mysql连接的方法PHP

时间:2015-12-16 14:56:52

标签: php mysql pdo

我有三个不同的类,我在某个php页面上用来从我的数据库中提取一些数据。每个类使用PDO执行自己的连接过程。我怎样才能检查是否已经使用pdo建立了与mysql的连接?我的连接代码如下:

try
{
    $DB_con = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass);
    $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $DB_con->exec("SET CHARACTER SET utf8"); 
}
catch(PDOException $exception)
{
    echo $exception->getMessage();
}

1 个答案:

答案 0 :(得分:0)

解决方案是创建一个公共的$ DB属性(在每个类中),然后当您在单个页面上实例化每个类时,将以前的类DB参数传递给它,如下所示:

class a {

    public $db = null

    public function setDB($db = null){
        if (is_null($db)){
            try
            {
                $DB_con = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass);
                $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $DB_con->exec("SET CHARACTER SET utf8"); 
$this->db = $DB_con;
            }
            catch(PDOException $exception)
            {
                echo $exception->getMessage();
            }       
        } else {
            $this->db = $db;
        }
    }
}

b和c类与a类相同

然后在您加载的页面上:

$a = new a;
$b = new b;
$b->setDB($a->db);
$c = new c;
$c->setDB($a->db);

然后,您可以调用3个类,但只有1个数据库连接