簡體   English   中英

PHP MongoDB 異常(錯誤處理)

[英]PHP MongoDB exception (Error handling)

我有一個 PHP 平台,用戶可以在其中編寫 mongodb 查詢,如下圖所示

在此處輸入圖片說明

並按照代碼將結果打印為表格

$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);

當我輸入正確的代碼系統能夠輸出我所有的結果但如果我寫錯了查詢我會收到錯誤消息

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

為了捕獲該錯誤,我嘗試遵循 try catch 代碼但沒有運氣

 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);
}

捕獲上述錯誤的最佳方法是什么

您看到的警告是 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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM