2015-06-15 148 views
2

我使用下面的代碼更新現有文檔。它的工作正常。檢查更新推送是否成功

foreach($jArray as $value){ 
!!some code!! 
    try { 
     $collection->update(array("tablename"=>$tablename),array('$push' => array("inventar" => $new_data))); 
     echo json_encode($collection); 
    } 
    catch (MongoConnectionException $e) { 
     echo '<p>Update failed</p>'; 
     exit(); 
    }   
} 

JSON響應:

{"w":1,"wtimeout":10000}{"w":1,"wtimeout":10000} 

(2個值嘗試更新)

即使沒有表名匹配,意味着沒有更新happend,結果爲w = 1。 爲什麼呢?沒有更新發生,w是1/true?

+0

這會跳出''push''。您是否在這裏使用''''(雙引號)? – ficuscr

+0

它使用''push''加雙引號:'未捕獲異常'MongoException'帶消息'零長度鍵是​​不允許的,您使用$用雙引號'''' – Piet

+0

對你的最後一條評論不清楚你是說這樣修復它,現在你得到的錯誤信息是有意義的嗎?你理解'$ foo''和'「$ foo」之間的區別是嗎?假設是這樣的。更多這裏... http://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php – ficuscr

回答

0

這裏似乎有點混亂。您正在查看的JSON響應不是更新操作的實際返回值。你所做的是JSON化集合本身,它具有整數屬性wwtimeoutsee source code here)。這些屬性與更新操作本身的結果無關。

所以,走正道看來你try報表範圍內的行,以更改爲:

$result = $collection->update(array("tablename"=>$tablename),array('$push' => array("inventar" => $new_data))); 
echo json_encode($result); 

有關取之於update方法返回,請參閱these docs更多的信息。

+0

哦,那可能是,我無法找到只有更新部分的代碼,你能幫我嗎? – Piet

+0

剛剛更新了一些建議和'update'方法文檔的鏈接。 – lucasnadalutti