0

私は、1999 年に最後に更新された、Joe Thong によって作成された「phpDB」クラスを使用する先史時代の PHP アプリケーションを維持するように割り当てられました。

現在、制限mysql_connectは、新しい接続に同じ接続リソースを使用することです。したがって、次のコードを使用すると:

$db1 = new phpDB()->connect(/* db1data, database 'one' */);
$db2 = new phpDB()->connect(/* db2data, database 'one' */);
$data = $db1->query($somequery); 

編集注: new phbDB()->connectいくつかの内部値を設定するだけで、パラメーターmysql_connectなしで標準を実行し$new_linkます。

ここでの問題は、以前の接続を書き換えたため、がデータベース two に対して実行される$queryことです。

trueこれは、 の 4 番目のパラメータとして使用することで解決できますmysql_connect。問題は、 12 年前のライブラリで何かを書き換えたくないということです (ライブ サーバーでどのように反応するかを純粋に恐れているため)。また、ライブ サーバーでは 4 番目のパラメーターがなくても機能します。ただし、私はサーバーの第一人者ではありません。ライブ環境をエミュレートするために、ローカルの MAMP 構成をオンにするための適切なディレクティブをサーバー構成で見つけることができませんでした。

誰でも私を助けることができますか?ありがとうございました。

EDIT : ラッパー自体:
phpDB.php – db ラッパーhttp://scrp.at/wd
phpDB-mysql.php – mysql 固有のコードhttp://scrp.at/we

4

2 に答える 2

2

これを修正する方法は、そのqueryメソッドを変更することです。

その中のどこかでを呼び出していmysql_query()ます。あなたがしなければならないのは、MySQL接続参照を含む内部変数への参照を含む2番目のパラメータを追加することです。

コードを投稿していないため、これは推測ですが、次のようなものが表示されると思います。

function query($thequery) {
    mysql_query($thequery);
    ....
}

これに変更してください

function query($thequery) {
    mysql_query($thequery, $this->dbreference);
    ....
}

あなたのクラスで「dbreference」と呼ばれるものが何であれ、私にはわかりません。mysql_connectが呼び出されたときに設定されている変数を探します。

于 2011-02-15T15:12:28.707 に答える
1

以下のページをご覧ください。

http://nl.php.net/manual/en/function.mysql-connect.php

http://nl.php.net/manual/en/function.mysql-query.php

new_link パラメータを入力すると、新しい接続を追加できます。

例えば:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password', 'link1');
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password', 'link2');

mysql_query($query, 'link1'); //query on database 1
mysql_query($query, 'link2'); //query on database 2
于 2011-02-15T14:52:50.493 に答える