您好我有一个邮政编码数据库,其中包含邮政编码和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结果资源
如果我移动封闭的括号,使它在更新之前,则错误消失,但没有信息进入数据库,我认为这是因为它不在循环中。我尝试了各种各样的东西,但似乎什么都没有用,所以任何正确方向的推动都会受到赞赏。
由于
答案 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