2017-01-14 86 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