1

PHP MySQL を使用して Web アプリケーションを作成しました。開発後、年次データのアーカイブを可能にする機能を追加する必要があります。これは、データベース全体をコピーするアドホック ソリューションに変換されます。

問題は、システムのすべての php ファイルに含まれている標準の「connections.php」ファイルがあり、データベース サーバー認証の詳細と名前が格納されていることです。コードは次のようになります。

$hostname_db_ntu = "localhost";
$database_db_ntu = "ntu";
$username_db_ntu = "root";
$password_db_ntu = "";
$db_ntu = mysql_pconnect($hostname_db_ntu, $username_db_ntu, $password_db_ntu) or trigger_error(mysql_error(),E_USER_ERROR); 

では、システムがオンザフライでデータベースを切り替えるにはどうすればよいでしょうか? 基本的に「$database_db_ntu」変数の値を変更する必要があります。別のphpを使用してphpファイルを編集するのが私の唯一のオプションですか?

(私は mysql_* が減価償却されていることを認識しており、可能な限り反論しました。)

編集:明確にするために:

システム全体が複数のテーブルを持つデータベースを使用し、すべてのページが上記のコードのインクルード ファイルを使用してそのデータベースに接続します。

このインクルード ファイルを何らかの方法で変更して、選択したデータベースを反映し、それに応じて接続を作成できるソリューションが必要です。

4

4 に答える 4

2

if..else ステートメントを使用するのはどうですか:

if ($dbcon1) {
$hostname_db_ntu = "localhost";
$database_db_ntu = "ntu";
$username_db_ntu = "root";
$password_db_ntu = "";
$db_ntu = mysql_pconnect($hostname_db_ntu, $username_db_ntu, $password_db_ntu) or trigger_error(mysql_error(),E_USER_ERROR);
} else {

//database connection2 here
}

次に、使用する接続を決定するために $dbcon1 の値を渡す必要があります。

于 2013-10-14T07:15:00.603 に答える
0

それで、これが私がしたことです。ユーザーが使用したいデータベースのバージョンに基づいて、セッション変数を設定しました。次に、グローバルな「connections.php」スクリプトを次のように編集しました。

session_start();
$hostname_db_ntu = "localhost";
if(isset($_SESSION['version']))
$database_db_ntu = $_SESSION['version'];
else
$database_db_ntu = "ntu";
$username_db_ntu = "root";
$password_db_ntu = "";
$db_ntu = mysql_pconnect($hostname_db_ntu, $username_db_ntu, $password_db_ntu) or trigger_error(mysql_error(),E_USER_ERROR); 

この方法の利点は、データベースを使用する各 php ファイルに移動して編集することなく、ユーザーがデータベースを切り替えることができることです。

于 2013-10-14T09:02:50.153 に答える