代码
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列的数据。
答案 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循环中当前所在的行。