Php While循环只返回第一行的timediff

Php While循环只返回第一行的timediff,php,Php,代码 我知道它应该有用。选择每行中2列的timediff,然后将其更新为该行中的diff列。但是现在发生的只是第一行的timediff被更新为所有diff列,而不是每个相应行中的timediff 示例:第一行的timediff是5,因此5是所有行中所有diff列的更新数据。更新中使用的WHERE语句是dtr\u id=dtr\u id。这永远都是事实 因此,$time SELECT语句正在选择dtr_id为dtr_id的第一行,这是它到达的第一行(对于每一行都是如此)。然后它用dtr\u id=

代码

我知道它应该有用。选择每行中2列的timediff,然后将其更新为该行中的
diff
列。但是现在发生的只是第一行的timediff被更新为所有
diff
列,而不是每个相应行中的timediff


示例:第一行的timediff是5,因此5是所有行中所有diff列的更新数据。

更新中使用的WHERE语句是dtr\u id=dtr\u id。这永远都是事实

因此,$time SELECT语句正在选择dtr_id为dtr_id的第一行,这是它到达的第一行(对于每一行都是如此)。然后它用dtr\u id=dtr\u id的信息更新每一行,这也是每一行


您可能需要使用“WHERE dtr_id=$minusdata['dtr_id']”将循环中的SELECT和UPDATE调整为某个值。这样,您将只选择并更新while循环中当前所在的行。

您不应该使用mysql_*家族函数。这不会上线,所以我只使用mysql。你能不能只做
更新dtr set diff=time\u到秒(timediff(time\u out,time\u in))
。成功了!。从未想过在
=
之后可以进行操作。我想它应该先被选中然后再更新。谢谢
$minus = mysql_query("SELECT * FROM dtr");
while($minusdata = mysql_fetch_array($minus, MYSQL_ASSOC))
{
    $time = mysql_fetch_assoc(mysql_query("SELECT time_to_sec(timediff(time_out,time_in)) as x from dtr where dtr_id = dtr_id"));
    $t = $time['x'];
    mysql_query("UPDATE dtr SET diff = '$t' WHERE dtr_id = dtr_id AND time_out != '00:00:00'");
}