PHP JSON:结果为空时打印空白页

时间:2014-07-21 13:06:00

标签: php mysql json

我使用此代码使用php json方法从MySql数据库中获取数据。

$ret  = array();
if(isset($_GET['userid'])){
$user = detect_attakcs($_GET['userid']);
$sql = DataSQL::FETCH("SELECT image FROM news WHERE user = ? ",$user);
foreach($sql as $value){
$ret[] = $value['image'];
}
echo json_encode($ret);
}

如果结果不为空,则输出:

["1.jpg","member_ph.png","user.jpg"] 

无结果时输出(空)

[""]

现在,当结果 为空时,我需要打印空白页而不打印[""]

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

从评论中可以看出,提问者从不想要显示[""],而添加到$ret的条目可能是空的,在这种情况下我们不想要显示任何JSON。让我们检查只有数据是否添加到$ret非空。之后,我们会检查$ret是否为empty

$ret  = array();
if (isset($_GET['userid'])) {
   $user = detect_attakcs($_GET['userid']);
   $sql = DataSQL::FETCH("SELECT image FROM news WHERE user = ? ",$user);
   foreach ($sql as $value) {
     // Only add values to $ret that contain something other than whitespace
     if (trim($value['image']) != '') {
         $ret[] = $value['image'];
     }
   }
   if (!empty($ret)) {
       echo json_encode($ret);
   }
}

或者,如果我们有很多复杂的条件,其中输出为[""],我们可以检查输出是否为[""]并且仅在它是的情况下输出它不等于那个。但是,这可能仍会输出类似的空值。

   $json_output = json_encode($ret);
   if ($json_output != '[""]') {
       echo $json_output;
   }

答案 1 :(得分:0)

试试这个:

echo empty($ret) ? '' : json_encode($ret);

希望它有所帮助。