代码之家  ›  专栏  ›  技术社区  ›  Boaz

mongoPHP将数组转换为字符串

  •  0
  • Boaz  · 技术社区  · 12 年前

    我正在通过MongoDB PHP驱动程序向MongoDB添加数据。

    由于某种原因,$_POST中的数组一旦在DB中,就会被转换为字符串。

    $_POST内容:(使用print_r打印)-仅粘贴相关数组

    Array
    (
    ...
    ...
       [ingredients] => [{u'amount': u'1 (14 ounce) can', u'name': u'black beans, drained', u'short_name': u'black beans'}, {u'amount': u'1 (8 ounce) jar', u'name': u'salsa', u'short_name': u'salsa'}]
    ...
    )
    

    DB命令是:
    $success = $collection->insert($_POST);

    mongoDB(使用mongoshell)中的结果是:

    { ....
    "ingredients" : "[{u'amount': u'1 (14 ounce) can', u'name': u'black beans, drained',     
    u'short_name': u'black beans'}, {u'amount': u'1 (8 ounce) jar', u'name': u'salsa',     
    u'short_name': u'salsa'}]", ..... }
    

    如何将其保留为数组?

    编辑:
    @萨尔瓦多·达利的回答是正确的。但为了将来的参考,真正的问题是数组本身(来自于由urllib2在python中生成的POST rquest) 这个 u'string' PHP的json_decode失败。将其固定到 "string" 解决了问题

    1 回复  |  直到 12 年前
        1
  •  0
  •   Salvador Dali    12 年前

    一切都很简单。你在你的配料中传递一条线。所以它在数据库中显示为字符串。

    要验证我是否正确,请运行以下命令 gettype($_POST['ingredients']) 你会看到结果是 str 。您的字符串很可能是JSON。

    您可以使用 json_decode() abd把它正确地插入你的mongo。

    推荐文章