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);
        }

    }

我需要的是 $ResultArray 填充了来自 MySQL 查询的大量数据。这不是我的实际应用程序(我知道对于显示的内容没有必要这样做),但是将结果传递给函数的原理是相同的。

这实际上可以做一些吗?

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()功能 -查看更多

数组和对象都可以传递给函数。因此,您的代码似乎是正确的,除了一行。它应该是:

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

要不就:

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