2012-05-09 29 views
2

我有一個項目,它在特定列中搜索特定條目,然後返回在該列中具有該條目的所有文檔。它幾乎完美的工作,除非當輸入字段爲空時,它會產生錯誤。讓我試着在下面說明。當MongoDB發現空白條目時顯示錯誤

我的DB:

A|B|C|D 
1|1|5|5 
2|1| |6 
3|2|7|7 
4|2|8|8 

我的PHP:

$query = array("B" => 1); 
$cursor = $collection->find($query); 

foreach ($cursor as $obj) { 
    echo $obj["A"] . $obj["B"] . $obj["C"] .$obj["D"] . "<br />"; 
} 

我的輸出是:

1155 
21Notice: Undefined index: C6 

我怎麼去不給出任何錯誤。把它當作一個空場。我不確定這是否是一個常見問題,但我仍然對PHP很陌生,對MongoDB也很陌生。

回答

2

使用isset()函數,以找出是否鑰匙使用它

foreach ($cursor as $obj) { 
    echo $obj["A"] . $obj["B"]. (isset($obj["C"]) ? $obj["C"] : '') .$obj["D"]."<br />"; 
    //It will replace each blank with an '' 
    } 
+0

不得不添加在括號中,但它現在完美地工作。謝謝 – EGHDK

0

我相信那是無關的MongoDB數組中存在試圖索引之前。它靈活的文檔模式如何工作。它不會返回字段,因爲在特定文檔中不存在密鑰C

我沒有任何PHP經驗。但肯定PHP會拋出錯誤,因爲您正試圖訪問不存在於特定文檔中的鍵'C'。

但我相信這些問題可以很容易地解決,如果你使用一些ODM(Object document mappers)。它通過根據字段的數據類型分配默認值來解決問題。

希望它有幫助