0

每天我都会得到一个 xml 文件,从中推断(使用 php)一组数据(大约一千条记录)并将它们存储在 mysql 中(所以一切都很好)。

为简单起见,我们假设 XML 文件包含以下字段:

date (AAAAMMDD) ;
replace ('S','N');
progressive (1,2,... n);
field 1 ;
field 2 ;
....
field n;

并且mysql表如下:

id;
date;
substitution;
progressive ;
field1 ;
field2 ;
....
fieldn;

在 xml 文件中,如果我有替换字段 = 'S' 表示该文件替换了以前发送的文件,并且渐进式指示版本(可能会得到更多替换)。

现在我想以这种方式处理这个问题:

1. if data != '$date' then insert in MySQL
2. if data = '$data' and replace = 'S' and progressive > $progressive then update
3. if data = '$data' and replace = 'S' and progressive <= $progressive then go out

对于第 1 点一切正常,但我无法处理第 2 点和第 3 点。你能帮帮我吗?谢谢你们。

4

1 回答 1

0

假设您的数据库中的给定日期应该只存在一个条目,它应该是:

$stmt = $pdo->prepare("SELECT COUNT(*) as cnt FROM [tablename] WHERE date = :date");
$stmt->bindValue(':date',$date);
$stmt->execute();
$res = $stmt->fetch();

if($res['cnt'] > 0) {
    if($replace == 'S') {

        $query = 'UPDATE [tablename] SET [fields_to_update] WHERE date = :date AND progressive > :progressive';
        $stmt = $pdo->prepare($query);
        $stmt->bindValue(':date',$date);
        $stmt->bindValue(':progressive',$progressive, PDO::PARAM_INT);
        $stmt->execute();

    } else {
        // do nothing because you have an entry that should not be updated
    }
} else {
    $query = 'INSERT INTO [tablename] ...';
    $stmt = $pdo->prepare($query);
    $stmt->execute();
}
于 2013-11-11T06:45:09.903 回答