循环更新MySQL表

时间:2014-04-07 19:13:30

标签: php sql while-loop sql-update

我有一个空列,我想更新值为PHP函数的行

<?php
function dystans1($lat1, $lon1, $lat2, $lon2) {
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$km = $dist * 60 * 1.1515*1.609344;
$unit = strtoupper($unit);
return $km;      
}

$connection = @mysql_connect('localhost', '***', '***')

or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());

$db = @mysql_select_db('****', $connection)

or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error()); 




$wynik = mysql_query("SELECT * FROM field_data_field_adres")
or die('Błąd zapytania');

if(mysql_num_rows($wynik) > 0) {
while($r = mysql_fetch_assoc($wynik)) {

    $km = dystans1($r['field_adres_lat'], $r['field_adres_lng'], 52.40633, 16.91811);
    echo $km;
    mysql_query("UPDATE field_data_field_adres SET dystans = $km ");



}
}

?> 

脚本向dystans插入相同的值。我想这样做,每一行都有另一个值

1 个答案:

答案 0 :(得分:0)

您的更新功能缺少WHERE子句。这意味着对于循环中的每一行,它计算距离,然后将所有行更新为相同的值。您需要在更新表时添加一个使用类似ID列的WHERE子句,以便它只更新一行而不是所有行。

示例:

mysql_query("UPDATE field_data_field_adres SET dystans = $km WHERE id={$r['id']}");