【问题标题】:Loop to update MySQL Table [closed]循环更新 MySQL 表 [关闭]
【发布时间】:2014-05-20 04:54:36
【问题描述】:

我有一个空列,我想用 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 中。我想这样做每一行都有另一个值

【问题讨论】:

    标签: php sql while-loop sql-update


    【解决方案1】:

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

    例子:

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

    【讨论】:

    • 它有效 :) 非常感谢!!!
    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多