基于逻辑测试更新mysql数据库

时间:2013-12-29 09:39:20

标签: php mysql

我正在尝试根据另一个数据库更新一个数据库。

基本上,两个数据库中的道路号,街区号和建筑物没有,但是一个包含拉特和长条而另一个没有。所以我试图更新到另一个。

这就是我所做的。

<?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
 }

?> 

它会更新测试数据库,但由于某种原因,它有错误的拉特和长片,即使我输入错误的道路和块并且在地址数据库中没有建立不存在,它用一些拉特和多头来更新它。

重要的是所有三个条件都是真的。

有什么建议吗?

2 个答案:

答案 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 = ''