0

私はどこを見ても、おそらく私が思いついた質問のすべてのバリエーションをグーグルで検索し、すべての提案を試しました...私は2つの異なる場所($localと$リモート)、2番目のものだけが機能します。これが私のコードのサンプルです( "..." =非表示):

//-------------Local DB Connection:
    $local = mysql_connect("localhost","root","...");
    if (!$local)
    {
        die('Could not connect: ' . mysql_error());
    }
    $sel1 = mysql_select_db("new", $local);
//-------------Remote DB Connection:
    $remote = mysql_connect("...","...","...",true);
    if (!$remote)
    {
        die('Could not connect: ' . mysql_error());
    }
    $table = "...";

//---------function selecting from local:
    function fncGrabNemsis($ele,$val){
        mysql_select_db("new", $local);
        $result = mysql_query("SELECT * FROM new.tblvalues
        WHERE fldelement='$ele' AND fldcode='$val'",$local);
        $tmprow = mysql_fetch_array($result);
        return (isset($tmprow['fldvariable'])?$tmprow['fldvariable']:$val);
    }

//----------Select run from Remote:
        mysql_select_db("ImdxTest", $remote);
        $result = mysql_query("SELECT * FROM ImdxTest.$table WHERE ClientID = ... AND IncidentNum = '$fldINCID'", $remote) or die(mysql_error());
        $row = mysql_fetch_array($result);

mysql_select_db()関数の呼び出しを、考えられるすべての場所に移動してみました...何が起こるかというと、$ localが定義されていない、またはmysql関数が$ local接続は、パラメーターがリソースであることを期待しています!?個別に両方が機能するため、両方の接続が機能することを私は知っています。2番目の接続($ remote)のみが機能します...提案をありがとうございます!

4

4 に答える 4

3

fncGrabNemsisグローバル変数が必要です$local

    function fncGrabNemsis($ele,$val){
        global $local;
        mysql_select_db("new", $local);
        $result = mysql_query("SELECT * FROM new.tblvalues
        WHERE fldelement='$ele' AND fldcode='$val'",$local);
        $tmprow = mysql_fetch_array($result);
        return (isset($tmprow['fldvariable'])?$tmprow['fldvariable']:$val);
    }

これはあなたがよりよく理解するのに役立つはずです:http://php.net/manual/en/language.variables.scope.php

于 2011-02-04T22:53:17.553 に答える
2

$local関数内では使用できません。これを読んでください:http://php.net/manual/en/language.variables.scope.php

[W]ユーザー定義関数では、ローカル関数スコープが導入されています。関数内で使用される変数は、デフォルトでローカル関数スコープに制限されています。

PHPでは、他の多くの言語とは異なり、外部スコープは関数内で使用できません。gloabalグローバルスコープから変数をインポートするには、変数を引数として渡すか(推奨されるソリューション)、またはキーワードを使用する必要があります。

于 2011-02-04T22:52:40.303 に答える
2

関数内から呼び出しfncGrabNemsisています。関数を開くと、変数に関してきれいな状態になります。以前に存在していた変数は、もはや存在しません。$local現在は未定義です。

これを回避する簡単な方法は$local、グローバル値に設定することです。

function fncGrabNemsis($ele,$val){
    global $local; 
    mysql_select_db("new", $local);
    ...

ただし、グローバルはおそらく良い考えではありません。不要になるようにコードを作り直す必要があります。

于 2011-02-04T22:53:37.017 に答える
1

関数内で使用しているようです。関数スコープ内からグローバルスコープ変数を参照するために$local使用する必要があります。global $local$local

于 2011-02-04T22:57:07.880 に答える