while循环只返回第一行的timediff

时间:2015-05-08 01:10:44

标签: php

  

代码

diff

我知道它应该有用。选择每行中2列的timediff,然后将其更新为该行中的diff列。但是发生的事情只是第一行的timediff被更新到所有function areEqual($firstPath, $secondPath, $chunkSize = 500){ // First check if file are not the same size as the fastest method if(filesize($firstPath) !== filesize($secondPath)){ return false; } // Compare the first ${chunkSize} bytes // This is fast and binary files will most likely be different $fp1 = fopen($firstPath, 'r'); $fp2 = fopen($secondPath, 'r'); $chunksAreEqual = fread($fp1, $chunkSize) == fread($fp2, $chunkSize); fclose($fp1); fclose($fp2); if(!$chunksAreEqual){ return false; } // Compare hashes // SHA1 calculates a bit faster than MD5 $firstChecksum = sha1_file($firstPath); $secondChecksum = sha1_file($secondPath); if($firstChecksum != $secondChecksum){ return false; } return true; } 列而不是每个相应行中的timediff。

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

1 个答案:

答案 0 :(得分:0)

您在UPDATE中使用的WHERE语句是dtr_id = dtr_id。这将永远是真的。

因此,$ time语句选择第一行,其中dtr_id是dtr_id,这是它的第一行。(每一行都是如此)。然后它使用该信息更新每一行,其中dtr_id = dtr_id,这又是每一行。

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