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

私は自分の DB に接続するためにこれを行います。これを Connect.php という別の php ファイルに入れ、すべてのページでそれを必要とします。

ただし、関数内でクエリを実行する必要がある場合、$mdb2 を引数として関数に渡す必要がありますか? これは正しい方法ですか?

さらに、DB にクエリを実行するクラスを作成しています。そして、私は何をすべきかわかりません(引数として渡したくありません)

毎回接続を再確立する必要がありますか (つまり、接続用の関数を作成します)。

接続を永続的かつグローバルにすることはできませんか?

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 ....");
}

他の解決策は、データベースにアクセスするためにを使用することです。これにより、変数Singleton Classへの参照を常に返す関数があります。$mdb2

確かに、データベース接続のグローバルまたはシングルトンの議論ですか?読む価値のあるものです。

于 2011-06-08T22:03:05.433 に答える