无法将记录从一个表更新到另一个表

时间:2012-10-16 13:31:24

标签: php mysql

您好我有一个邮政编码数据库,其中包含邮政编码和lat和lon详细信息,在另一个表中,我有一个带有邮政编码的公司列表,并希望将lat和lon详细信息添加到匹配的邮政编码,而不是使用连接查询等下面是我正在使用的代码,我之前使用过类似的东西,但我无法理解为什么这不起作用。

$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结果资源

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

由于

2 个答案:

答案 0 :(得分:0)

试试这个:

"UPDATE companies SET lat ='"+$lat+"' and lng ='"+$lon+"'   
 WHERE postal_code = '"+$postcode+"'"

答案 1 :(得分:0)

确实没有必要通过邮政编码结果循环。您可以在单个SQL语句中更新所有公司。

UPDATE companies c
    INNER JOIN postcodes p
        ON c.postal_code = p.postcode
    SET c.lat = p.lat,
        c.lng = p.lon