首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用if else的php e查询

使用if else的php e查询
EN

Stack Overflow用户
提问于 2013-11-11 14:36:15
回答 1查看 58关注 0票数 0

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

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

代码语言:javascript
复制
date (AAAAMMDD) ;
replace ('S','N');
progressive (1,2,... n);
field 1 ;
field 2 ;
....
field n;

mysql表如下:

代码语言:javascript
复制
id;
date;
substitution;
progressive ;
field1 ;
field2 ;
....
fieldn;

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

现在我想这样来处理这个问题:

代码语言:javascript
复制
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

第一点没问题,但我不能处理第二和第三点。你能帮我吗?谢谢你们所有人。

EN

回答 1

Stack Overflow用户

发布于 2013-11-11 14:45:10

假设您的数据库中对于给定日期只存在一个条目,则应为:

代码语言:javascript
复制
$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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19900254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档