0

MySQLの結果行を取得して処理用の関数に渡そうとしていますが、行が渡されません。これは、実際の行がオブジェクトとして返され、オブジェクトを関数に渡すことができないためだと思いますか?

例えば

function ProcessResult($TestID,$Row){
    global $ResultArray;
    $ResultArray["Sub" . $TestID] = $Row["Foo"] - $Row["Bar"];
    $ResultArray["Add" . $TestID] = $Row["Foo"] + $Row["Bar"];
}



$SQL = "SELECT TestID,Foo,Bar FROM TestResults WHERE TestDate !='0000-00-00 00:00:00'";
$Result= mysql_query($SQL$con);

    if(!$Result){
        // SQL Failed
        echo "Couldn't find how many tests to get";
    }else{

        $nRows = mysql_num_rows($Result);

        for ($i=0;$i<$nRows;$i++)
        {
            $Row = mysql_fetch_assoc($Result);

            $TestID = $Row[TestID];

            ProcessResult($TestID,$Row);
        }

    }

必要なのは、MySQLクエリからの大量のデータが入力された$ResultArrayです。これは私の実際のアプリケーションではありませんが(表示されているものに対してこれを行う必要はないことはわかっています)、結果を関数に渡す原理は同じです。

これは実際に何らかの方法で行うことができますか?

ダン

4

2 に答える 2

0

mysql_query($SQL$con);最初はmysql_query($SQL,$con);構文エラーです。これがあなたのプログラムに影響を与えるのか、それともここでのタイプミスだったのかわからない。

配列キーを引用符で囲むことをお勧めします。$row[TestID]する必要があります$row["TestID"]

ここでいくつかの奇妙なアイデアが起こっていますが、残りはうまくいくように見えます。

また、これを実行して、コードを少しすっきりさせることができます。

if(!$Result){
    // SQL Failed
    echo "Couldn't find how many tests to get";
}else{

    while($Row = mysql_fetch_assoc($Result))
    {
        $TestID = $Row['TestID'];

        ProcessResult($TestID,$Row);
    }

}
于 2012-12-04T22:36:13.213 に答える
0

mysql_fetch_assoc()連想配列を返します-もっと見る

オブジェクトが必要な場合は、mysql_fetch_object()関数を試してください-もっと見る

配列とオブジェクトの両方を関数に渡すことができます。したがって、1行を除いて、コードは正しいように見えます。そのはず:

$Result= mysql_query($SQL, $con);

あるいは単に:

$Result= mysql_query($SQL);
于 2012-12-04T22:39:01.073 に答える