Mysql:没有匹配的测试获取

时间:2016-04-14 21:18:59

标签: mysql

我有一个查询,它应该返回格式

的多行
+---------------------+-------+
| Date                | Count |
+---------------------+-------+
| 2016-04-15 01:00:00 |    10 |
+---------------------+-------+

如果没有匹配项,查询会重新运行

+---------------------+-------+
| Date                | Count |
+---------------------+-------+
| Null                |     0 |
+---------------------+-------+

我想测试这两个条件,前者返回一些JSON,后者返回空JSON(不是很多JONS'无',' 0' )。

我试图偷看第一行

   $firstRow = $sqlQuery->fetch(PDO::FETCH_ASSOC);
   if ($firstRow['Count'] == 0) 
       $returnData = '';
   else
       $returnData = $sqlQuery->fetchAll(PDO::FETCH_ASSOC);

但是,它似乎在偷看'第一行意味着我之后不能fetchAll(),因为在这种情况下JSON数据也是空的。

我误解了吗?我该如何编码这个支票呢?

[Updfate]问题是查询为每个日期返回一行NULL, 0

如果数据是"真实的",我可以FETCH_ALL()然后json_encode(),但请注意NULL, 0我的所有内容都不是&# 39;我想这样做,我想要json_encode()一个空字符串并返回它。

1 个答案:

答案 0 :(得分:1)

您的查询可能会被重新表示为不返回任何元组而不是NULL,0元组。但是,快速而又脏的修复方法是将您的查询包含在另一个过滤NULL日期的查询中:

SELECT * FROM (<your current query>) x WHERE `Date` IS NOT NULL