new MongoId($_POST["id"])), array("$set" => array( "contentType" =>"> new MongoId($_POST["id"])), array("$set" => array( "contentType" =>"> new MongoId($_POST["id"])), array("$set" => array( "contentType" =>" />

このMongoDBがPHPを介して$ setクエリを更新すると何が問題になるでしょうか?

私はコレクションを更新することにちょっと悩まされています。

だから、私はこのクエリを持っています:

$coll->update(
            array("_id" => new MongoId($_POST["id"])),
            array("$set" => array(
                "contentType" => htmlspecialchars(strip_tags(trim($_POST["type"]))),
                "contentTitle" => htmlspecialchars(strip_tags(trim($_POST["title"]))),
                "contentBody" => htmlspecialchars(strip_tags(trim($_POST["content"])))
            )),
            true,
            false
        );

Please don't bother with the way of validating the $_POST, it's only a test, but it doesn't work. The collection is ok, I have checked that. It doesn't do anything, and when I insert var_dump($db->lastError()); it gives me no errors at all.

0
セーフモードで実行するようにクエリを設定しましたか? FALSE(デフォルト)の場合、プログラムはデータベース応答を待たずに実行を継続します。 TRUEの場合、プログラムはデータベース応答を待機し、更新が成功しなかった場合はMongoCursorExceptionをスローします。それはあなたの最後のエラーが何も返さない理由かもしれません。 us.php.net/manual/en/mongocollection.update.php
追加された 著者 Brian Knight,
セーフモードがオンになっていない場合は、例外は返されません。
追加された 著者 Brian Knight,
問題は、私がバクテクを受け入れないことです...
追加された 著者 benqus,
これは何ですか? - > Mon Feb 6 17:06:49不正な形式のUTF-8文字シーケンス(オフセット127)
追加された 著者 benqus,
[OK]を私は更新のために別の方法を試してみました、それを確認してください。 =)
追加された 著者 benqus,

2 答え

さて、私はすぐに解決策を得ました。

$r = $coll->findOne(
            array(
                "_id" => new MongoId($_POST["id"])
            )
        );
        //
        $r["contentType"] = htmlspecialchars(strip_tags(trim($_POST["type"])));
        $r["contentTitle"] = htmlspecialchars(strip_tags(trim($_POST["title"])));
        $r["contentBody"] = htmlspecialchars(strip_tags(trim($_POST["content"])));
        //
        $coll->save($r);

だからこれはうまく動作します。しかし、私は以前のものを見つけたいと思っています... = P なぜ誰かがそれが動作していないことを知っている場合は、自由に答えてください! =]

0
追加された
私はこれを試してみなければならないのですか? ($ _ POST ["id"]))、array( "$ set" => array( "contentType" => htmlspecialchars(strip_tags($ _ POST ["id"]) htmlspecialchars(strip_tags($ _ POST ["content"])))、 "contentTitle" => htmlspecialchars(strip_tags($ _ POST ["title"])))、 "contentBody" => );)))、array( "upsert" = false)、array( "fsync" => true)、array( "safe" => true));
追加された 著者 benqus,
fsync = trueを渡してみましたか?
追加された 著者 Melvin Protacio,
array( "upsert" => false、 "fsync" => true、 "safe" => true)は、私が思う最後のパラメータ
追加された 著者 Melvin Protacio,

あなたのApacheのログを確認してください。 更新に基づいて、3番目のパラメータは配列です。あなたはそれに固執したいかもしれません。

0
追加された
いいえ、このマシンにはApacheはありません...これはMongoDBのためのVMです... Webサーバーは別のVMにあります...この更新sh * tだけは(まだ)動作しません。私はvar/log/mongo/mongod.logをチェックしたことがあります。そこには珍しいものはありません...そして、スクリプトの最後に真と偽のパラメータの代わりに配列( "upsert" => true)更新...
追加された 著者 benqus,
私はMongoDB v2.0.2を使用していますが、これが重要かどうかわかりません...
追加された 著者 benqus,
私は金曜日にこのVMを作成して "yum install pecl"を作成したので、それは問題ではないと思います...
追加された 著者 benqus,
[OK]を私は更新のために別の方法を試してみました、それを確認してください。 =)
追加された 著者 benqus,
どのバージョンのmongodbとpecl拡張子が使用されているかチェックしましたか?おそらくそこに問題があったでしょう。エラー処理を E_ALL に設定することもできます。
追加された 著者 Melvin Protacio,
あなたのphp拡張バージョンとmongodbサーバのバージョンが互いに互換性があるかどうか確認してください
追加された 著者 Melvin Protacio,
MongoDBのコンソールを使って、 $ _ POST ['id'] の値が与えられた文書を探してみましたか?
追加された 著者 Melvin Protacio,
追加された 著者 Melvin Protacio,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com