2017-01-14 49 views
2

我有一个PHP平台,在这里用户写入的mongodb查询像图片下面PHP MongoDB的异常(错误处理)

enter image description here

和下面的代码打印结果作为表

$m = new MongoClient(); 
$db = $m->Forensic; 
$coll= $db->mobile_data; 

if (isset($_POST['txt_area']) && !empty($_POST['txt_area'])) { 


    $d = ($_POST['txt_area']); 
    $p = json_decode($d); 
    $user_code = $coll->find($p); 

当I型正确的代码系统能够输出我所有的结果,但如果我写错误的查询,我会得到如下错误消息:

Warning: MongoCollection::find(): expects parameter 1 to be an array or object, null given in C:\xampp\htdocs\reports5.php on line 126 

赶上这个错误我已经尝试以下尝试捕捉的代码,但没有运气

try { 
if (isset($_POST['txt_area']) && !empty($_POST['txt_area'])) { 


    $d = ($_POST['txt_area']); 
    $p = json_decode($d); 
    $user_code = $coll->find($p); 

    $NumberOfRow2 = $user_code->count(); 

    $user_code->sort(array('Chat_group' => -1, 'Instant_Message' => 1)); 

} 
} 

catch (MongoCursorException $e) { 
    echo "error message: ".$e->getMessage()."\n"; 
    echo "error code: ".$e->getCode()."\n"; 
} 

catch (MongoException $e) 
{ 
    echo $e->getMessage(); 
} 
catch(MongoResultException $e) { 
    echo $e->getMessage(), "\n"; 
    $res = $e->getDocument(); 
    var_dump($res); 
} 

这将是赶上上述错误

回答

1

你看到的警告PHP抱怨$coll->find($p);预期的最佳方式$p是数组或对象,而它是null。引用json_decode文档:

如果json无法解码或编码数据比递归限制更深,则返回NULL。

所以抵御警告适当的方法是:

$p = json_decode($d); 
if ($p === null) { 
    echo "Provided query is invalid!"; 
} else { 
    // do your logic 
} 
+0

大!谢谢 – Sumon