我运行一个查询,并使用下面的代码循环修改其中一个字段。我只需要很短的时间修改数字,不需要它回到数据库。这样可以正常工作,并使用回声打印出预期的值。
while ($d1 = mysqli_fetch_array($d1_query))
{
echo "Before: " . $d1['d1_name'] . ": " . $d1['d1_earn_rate'] . "<br>";
if ( $e1['e_id'] == $h1['e_id'] )
$d1['d1_earn_rate'] = $d1['d1_earn_rate'] * 1.2;
echo "After: " . $d1['d1_name'] . ": " . $d1['d1_earn_rate'] . "<br><br>";
}
之后,我想计算结果子集的总和。我使用mysqli_data_seek将计数器重置为第一行,所以我可以遍历它。但是,当我这样做时,它会根据查询中的原始数字计算总数,而不是修改后的数字。
我之前使用过msqli_data_seek没有任何问题,但这是我第一次在尝试循环回来之前修改结果中的数据。我不明白为什么我会丢失数据。
mysqli_data_seek($d1_query,0);
$counter = 0;
while ($counter < 15)
{
$counter++;
$d1 = mysqli_fetch_array($d1_query);
echo $d1['d1_name'] . ": " . $d1['d1_earn_rate'] . "<br>";
$total_earn_rate += $d1['d1_earn_rate'];
}
答案 0 :(得分:1)
你似乎在思考太深。问题很简单:
mysqli_fetch_array
将数据从MySQL服务器提取到PHP的内存中并将其返回$d1
$d1
在任何时候你都没有操纵MySQL服务器所拥有的结果集,而且你总是通过mysqli_fetch_array
从所述MySQL结果集中重新提取数据。每次调用该函数时,您都将从MySQL持有的结果集中获取未修改的数据。