如何从 MySQL 数据库中删除在 XML 文件中找不到的行


how to delete rows from mysql database not found in xml file

我有一个 xml 文件,

现在它已插入到 MySQL 数据库中,但 xml 文件中存在问题,这意味着某些数据可能会从站点中删除,所以我更新了 xml 文件,我编写了用于从数据库表中删除数据的代码,该表从 xml 中删除但记录仍在数据库中。

从另一种方式我想比较xml文件和数据库并删除未找到的数据。

<?php
    ini_set('display_errors','On');
    //connecting to database.
    echo "connected to DB<br /><br />";

    $url = "test.xml";
    $xmlfgc = file_get_contents($url);
    $xmlitem = new SimpleXMLElement($xmlfgc);
    echo "xml loaded<br /><br />";
    foreach ($xmlitem->property as $xml) {
        //$id          = mysql_real_escape_string($xml->id);              
        $mls_id      = mysql_real_escape_string($xml->ref);         
        //echo "$mls_id";
        echo "xml parsed<br /><br />";            
         $result = mysql_query("SELECT mls_id FROM ezrealty");

       //$select = "SELECT mls_id FROM ezrealty";
       //$storeArray = Array();
       //while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
       //     $storeArray[] =  $row['mls_id'];  
       //}
        if ($result != $mls_id){    
            $query = "DELETE FROM ezrealty WHERE mls_id = '$mls_id'";
            mysql_query($query) or die(mysql_error());
            echo "DataBase deleted<br /><br />";
    }else{                          
            echo "There is no deleted properties from xml file.";        
        }                  
    }
       //show updated records 
       echo "<br /><br />";
       printf ("Records updated: %d'n", mysql_affected_rows());  
    //close connection 
    mysql_close($con2);
?>

谢谢你,现在我有我的问题的解决方案。

<?php
    ini_set('display_errors','On');
    //connecting to database.
    echo "connected to DB<br /><br />";

    $url = "test.xml";
    $xmlfgc = file_get_contents($url);
    $xmlitem = new SimpleXMLElement($xmlfgc);
    echo "xml loaded<br /><br />";
    $xmldata = array();
    foreach ($xmlitem->property as $xml) {               
       $mls_id      = mysql_real_escape_string($xml->ref);                
       // $xmldata[] = "$mls_id";
       $xmldata[] = '("' . $mls_id. '")';     
    }
    //Get all reference numbers from database in array     
    $result = mysql_query("SELECT mls_id FROM gitfd_ezrealty");
    $storeArray = Array();
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
          $storeArray[] =  $row['mls_id'];  
     }
    //get difference between two arrays.     
    $result1 = array_diff($xmldata, $storeArray);   
    foreach ($result1 as $value) {
        //echo "<strong>$value</strong> <br />";
        //$value1 = '("' . $value. '")';
        //$query = 'INSERT INTO gitfd_ezrealty (mls_id)
        //VALUES' . implode(',', $value1);    
        //mysql_query($query) or die(mysql_error());
        //echo "inserted into mysql<br /><br />";
    }
    echo "These properties are founded in target site and Not founded in our site.<br />";
    echo "________________________________________________________________"."<br />";
    print_r($result1);
    echo "<br />"."_____________________________________________________________________"."<br />";

   $result2 = array_diff($storeArray, $xmldata);
    foreach ($result2 as $value) {
           //echo "<strong>$value</strong> <br />"; 
           $query = "DELETE FROM ezrealty WHERE mls_id = '$value'";
            mysql_query($query) or die(mysql_error());
            echo "DataBase deleted<br /><br />";
    }    
    echo "_________________________________________________________________"."<br />";
    print_r($result2);
    echo "<br />"."______________________________________________________________________"."<br />";
    echo "These properties were deleted .<br />";
       //show updated records 
       echo "<br /><br />";
       printf ("Records updated: %d'n", mysql_affected_rows());  
    //close connection 
    mysql_close($con2);
?>