我使用此代码使用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"]
无结果时输出(空)
[""]
现在,当结果 为空时,我需要打印空白页而不打印[""]
。
我该如何解决这个问题?
答案 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);
希望它有所帮助。