2012-06-15 98 views
1

我一直在使用MongoDB和PHP幾個月了。我正在做一些新功能的測試,無論從哪裏來看,MongoDB的表現都很奇怪。它將字符串中的第一個字符插入到數據庫中時截斷它。我的代碼沒有改變,只有結果? 我有一個稱爲細節的文本表單。 當我提交併將其插入到集合中時,細節條目會變得很棘手。 如果我輸入「番茄」到表單中,我將得到:奇怪的MongoDB錯誤PHP

從PHP回聲(建築從查詢插入後的條目):

"omato" 

從蒙戈殼牌我收到:

"Details" : "" 

從API請求(回聲JSON)我接收:

"Details" : "\u0000omato" 

不限這是什麼原因導致的想法?

+0

嗯,有趣的事情。所有的作品再次完美。如果有人讀到這個,有沒有人有過像Mongo這樣的隨機錯誤?似乎有點粗略? – nathansizemore

+0

在這個timepam期間發生任何os更新? –

+0

沒有。只需從數據庫中刪除所有條目,然後開始輸入新條目進行測試。真奇怪。 – nathansizemore

回答

1

看來你似乎有某種原因在字符串中添加了\0字符。三種不同的工具以不同的方式處理這一切:

  1. PHP的回聲只是顯示它,因此它不會出現。如果您通過類似hexdump的輸出流式輸出,您將看到\0字符。

  2. mongo shell在遇到\0字符時會截斷顯示,因此您什麼都看不到。

  3. PHP的JSON編碼器將\0字符編碼爲「\ u0000」。

+0

我認爲這可能與Virgina EC2的報道有關。在發生這個奇怪的錯誤的同時,它正在經歷錯誤。我從來沒有改變過代碼,它只是工作,沒有,並且從那以後一直工作。 – nathansizemore