if语句检查是否存在某些内容,否则UPDATE

时间:2013-02-19 11:02:36

标签: php xml api if-statement

我有一个.xml页面,我想每6小时提取一次数据。

然后将此数据插入数据库,并将唯一密钥设置为“characterID”。

然后代码需要根据其结果检查以下内容。

  1. 如果.XML文件包含尚未在数据库中的characterID,请添加该行!

  2. 如果数据库包含不在.XML删除行中的字符ID!

  3. 如果.XML文件中的一行(THE CHARACTERID不会不同,但其他数据会不同)到数据库中的行UPDATE,那么带有新信息的行WHERE charactedID是相同的!

    < / LI>

    this是我当前的源代码,它循环遍历XML并正确插入数据,但我无法更新信息。

    <?php
    // INCLUDE DB CONNECTION FILE
    include("includes/connect.php");
    
    // CHANGE THE VALUES HERE
    include("includes/config.php");
    
    // URL FOR XML DATA
    $url = "test.xml"; // For Testing Purposes
    
    // RUN XML DATA READY FOR INSERT
    $xml = simplexml_load_file($url);
    
    // RUN SQL to check data already in table
    $sql = mysql_query("SELECT * from `ecmt_memberlist`");
    
    // Loop Through Names
    foreach ($xml->result->rowset[0] as $value) {
    
    $characterID = mysql_real_escape_string($value['characterID']);
    $name = mysql_real_escape_string($value['name']);
    $startDateTime = mysql_real_escape_string($value['startDateTime']);
    $baseID = mysql_real_escape_string($value['baseID']);
    $base = mysql_real_escape_string($value['base']);
    $title = mysql_real_escape_string($value['title']);
    $logonDateTime = mysql_real_escape_string($value['logonDateTime']);
    $logoffDateTime = mysql_real_escape_string($value['logoffDateTime']);
    $locationID = mysql_real_escape_string($value['locationID']);
    $location = mysql_real_escape_string($value['location']);
    $shipTypeID = mysql_real_escape_string($value['shipTypeID']);
    $shipType = mysql_real_escape_string($value['shipType']);
    $roles = mysql_real_escape_string($value['roles']);
    $grantableRoles = mysql_real_escape_string($value['grantableRoles']);
    
    
    // NOW LETS INSERT INTO DATABASE!!
    $query = "INSERT INTO `ecmt_memberlist` SET
    characterID='$characterID',
    name='$name',
    startDateTime='$startDateTime',
    baseID='$baseID',
    base='$base',
    title='$title',
    logonDateTime='$logonDateTime',
    logoffDateTime='$logoffDateTime',
    locationID='$locationID',
    location='$location',
    shipTypeID='$shipTypeID',
    shipType='$shipType',
    roles='$roles',
    grantableRoles='$grantableRoles'";
    
    //echo query to error check
    echo $query;
    echo "<br><br>";
    
    mysql_query($query) or die(mysql_error());
    };
    ?>
    

    这个插入的表还将保存一些与characterID相关的其他信息,因此需要“不删除行和替换”否则我会在手动添加时丢失该行中的相关数据。

1 个答案:

答案 0 :(得分:0)

您可以先使用CharacterID执行SELECT语句。您可以检查rowcount是否等于1.如果是这种情况,您可以更新您的行,否则您在数据库中插入一个新行。