我正在尝试根据另一个数据库更新一个数据库。
基本上,两个数据库中的道路号,街区号和建筑物没有,但是一个包含拉特和长条而另一个没有。所以我试图更新到另一个。
这就是我所做的。
<?php
mysql_connect("localhost", "root", "test") or die(mysql_error());
mysql_select_db("class") or die(mysql_error());
$data = mysql_query("SELECT * FROM testdata WHERE lat2='' And lon2 = ''"); // Selects from the database without lats and longs
$address = mysql_query("SELECT * FROM address ") // selects from database with lats and longs
or die(mysql_error());
while($infodata = mysql_fetch_array( $data ))
{
$infoaddress = (mysql_fetch_array($address));
$BuildingA = $infoaddress['Building']; // A stands for Address where is the database address
$RoadNoA = $infoaddress['RoadNo'];
$BlockA = $infoaddress['Block'];
$BuildingD = $infodata['Building']; // D stands for testData which is the same database
$RoadNoD = $infodata['RoadNo'];
$BlockD = $infodata['Block'];
$idA = $infoaddress['id']; // ID for address
$idD = $infodata['id']; // ID for Data
$lat = $infoaddress['lat']; // get the lats and longs
$lon = $infoaddress['lon'];
if ($BuildingA = $BuildingD && $RoadNoA = $RoadNoD && $BlockA = $BlockD)
{ // do the logical test
mysql_query("UPDATE testdata SET lat2='$lat', lon2='$lon' WHERE id='$idD'"); // update the values
}
else
mysql_query("UPDATE testdata SET lat2='', lon2='' WHERE id='$idD'"); // update the values
}
?>
它会更新测试数据库,但由于某种原因,它有错误的拉特和长片,即使我输入错误的道路和块并且在地址数据库中没有建立不存在,它用一些拉特和多头来更新它。
重要的是所有三个条件都是真的。
有什么建议吗?
答案 0 :(得分:2)
试试这个,使用==
代替=
if ($BuildingA == $BuildingD && $RoadNoA == $RoadNoD && $BlockA == $BlockD)
而不是
if ($BuildingA = $BuildingD && $RoadNoA = $RoadNoD && $BlockA = $BlockD)
答案 1 :(得分:1)
我怀疑你真正想要的是UPDATE
JOIN
:
UPDATE testdata t
JOIN address a USING (Building, RoadNo, Block)
SET t.lat2 = a.lat, t.lon2 = a.lon
WHERE t.lat2 = '' AND t.lon2 = ''