1

嗨,我有一个邮政编码数据库,其中包含邮政编码以及经纬度详细信息,在另一个表中,我有一个带有邮政编码的公司列表,并希望将经纬度详细信息添加到匹配的邮政编码中,而不是使用连接查询等。下面是我正在使用的代码,我以前使用过类似的东西,但我无法弄清楚为什么这不起作用。

$host    = "localhost";
$username = "";
$password = "";
$database = "";
mysql_connect( $host, $username, $password );
mysql_select_db( $database ) or die( "Unable to select database" );


$query = "SELECT * FROM postcodes";      
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){   



$postcode = $row['postcode'];   
$lat = $row['lat']; 
$lon = $row['lon']; 



$result = mysql_query("UPDATE companies SET lat ='$lat' and lng ='$lon'  
WHERE postal_code = '$postcode'") 
or die(mysql_error());  

}

我得到的错误是:警告:mysql_fetch_array():提供的参数不是第 15 行 /home/visitrac/public_html/postcode.php 中的有效 MySQL 结果资源

如果我移动封闭括号,使其在更新之前,则错误消失但没有信息进入数据库,我认为这是因为它不在循环中。我已经尝试了各种各样的事情,但似乎没有任何效果,因此任何朝着正确方向的推动都会受到赞赏。

谢谢

4

2 回答 2

0

试试这个:

"UPDATE companies SET lat ='"+$lat+"' and lng ='"+$lon+"'   
 WHERE postal_code = '"+$postcode+"'"
于 2012-10-16T13:35:06.423 回答
0

确实不需要循环遍历邮政编码结果。您可以在一条 SQL 语句中更新所有公司。

UPDATE companies c
    INNER JOIN postcodes p
        ON c.postal_code = p.postcode
    SET c.lat = p.lat,
        c.lng = p.lon
于 2012-10-16T13:35:44.540 回答