0

スクリプトの最初に、 host_1へのMySQL接続を開きます。その間のどこかで、 host_2への接続を開閉する関数(関数retrieve_information_from_host_2)を呼び出します。

残念ながら、関数呼び出し後のコードは、引き続き関数(host_2 )の接続を使用します

ただし、前の接続host_1を続行するために必要です。

<?php

function retrieve_information_from_host_2($host_2, $username_2, $password_2, $database_2) {
    $connection = mysql_connect($host_2, $username_2, $password_2);
    if($connection) {
        if(mysql_select_db($database_2)) {
            $sql = "SELECT * FROM table WHERE id = 1;";
            $erg = mysql_query($sql);
            $row = mysql_fetch_assoc($erg);

            return $row;
        }
        mysql_close($connection);
    }
}

if(mysql_connect($host_1, $username_1, $password_1)) {
    if(mysql_select_db($database_1)) {
        $sql = "SELECT * FROM table WHERE id = 1;";
        $erg = mysql_query($sql);
        $row = mysql_fetch_assoc($erg); # CORRECT - This returns data from host 1

        $row_host_2 = retrieve_information_from_host_2(); # CORRECT - This returns data from host 2

        $sql = "SELECT * FROM table WHERE id = 2;";
        $erg = mysql_query($sql);
        $row = mysql_fetch_assoc($erg); # WRONG - This returns data from host 2 instead of host 1
    }
    mysql_close();
}
?>

各接続に名前を付けることで、ほぼすべての組み合わせを試しました

$connection_1 = mysql_connect($host_1, $username_1, $password_1);
...
mysql_close($connection_1);

明示的に閉じるなど。

何も役に立ちません。誰かが私たちにこの問題の解決策を与えることができますか?

PS:私たちはこのアプローチ(関数)に縛られており、クラスを使用することはできません。

どうもありがとうございます!

4

2 に答える 2

4

2番目のパラメータlink_identifier(MySQL接続)については、 mysql_queryのマニュアルを参照してください。

リンク識別子が指定されていない場合、mysql_connect()によって開かれた最後のリンクが想定されます。

また、古いmysqlの代わりにmysqliを使用する必要があります。

于 2012-10-19T17:06:10.523 に答える
0

接続リンク識別子を2番目の引数として渡してみてください。

例えば:

$connection1 = mysql_connect($host_1, $username_1, $password_1);
$connection2 = mysql_connect($host_2, $username_2, $password_2);
mysql_query('Query',$connection1);
mysql_query('Query',$connection2);
于 2012-10-19T17:00:52.433 に答える