每天我都会得到一个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第一点没问题,但我不能处理第二和第三点。你能帮我吗?谢谢你们所有人。
发布于 2013-11-11 14:45:10
假设您的数据库中对于给定日期只存在一个条目,则应为:
$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();
}https://stackoverflow.com/questions/19900254
复制相似问题