mysql_fetch_assoc在第一次循环后没有返回值

时间:2013-05-02 05:49:24

标签: php mysql

我创建了一个外部函数(下面的代码)来计算平均评级,然后将该评级回显到动态表格中的主页面。此函数位于调用它的页面上的do-while循环内部。我已将问题缩小到msql_fetch_assoc变量"$row_RatingResults"。它在第一次迭代通过主页循环后没有返回有效变量,这意味着该函数返回的第一个值是正确计算的,但是在循环的第一次迭代之后有一个除零错误,因为$row_RatingResults没有返回值。正在调用的$ ID变量来自主页面(显然),它本身来自mysql_fetch_assoc (i.e. $ID="rt_".$row_rsResults['outlineID'];)代码粘贴在下面......任何帮助都会非常感激。我出于安全目的出了一些地方,但知道这确实可以正确连接到mysql。

<?php 
// contact to database
require_once('*****');
mysql_connect("localhost", "*****", "*****") or die ("Error , check your         server connection.");
mysql_select_db("*****");

require_once("*****");
    function CalculateRating($ID)
{

        $query_RatingResults = "SELECT * FROM rtgitems WHERE (item = '$ID')";
        $RatingResults = mysql_query($query_RatingResults) or die(mysql_error());
        $row_RatingResults = mysql_fetch_assoc($RatingResults);
    $TRate=$row_RatingResults['totalrate'];
    $NoRates=$row_RatingResults['nrrates'];
    $finalrate=$TRate/$NoRates;
    echo $finalrate;            
}
?>

2 个答案:

答案 0 :(得分:1)

试试这个

while($row_RatingResults = mysql_fetch_assoc($RatingResults)){
    $TRate=$row_RatingResults['totalrate'];
    $NoRates=$row_RatingResults['nrrates'];
    $finalrate=$TRate/$NoRates;
   echo $finalrate."<br>";
}

答案 1 :(得分:1)

试试这个: -

$query = sprintf("SELECT * FROM rtgitems WHERE (item = '%s')" , $ID);

$RatingResults = mysql_query($query) or die(mysql_error());

while($row_RatingResults = mysql_fetch_assoc($RatingResults)){
    $TRate=$row_RatingResults['totalrate'];
    $NoRates=$row_RatingResults['nrrates'];
    $finalrate=$TRate/$NoRates;
    $finalrate=$TRate/$NoRates;
    echo $finalrate; 
}