用if else查询php e查询

时间:2013-11-11 06:36:15

标签: php mysql

每天我都会得到一个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。 你可以帮帮我吗 ? 谢谢大家。

1 个答案:

答案 0 :(得分: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();
}