PHP と Javascript を使用する MongoDB で問題が発生しています。
1) ドキュメントをコレクションに書き出し、そこにあることを確認します。
{
"_id": ObjectId("500d9f072d854e2001000018"),
"field1": "happenstance",
"mydata": "balls grinders",
"desc": "johnsig"
}
2) JavaScript を使用して、php プログラムを呼び出してコレクションからレコードをフェッチします。
function fetch(){
$.ajax({
url: "sbugger.php",
dataType: "json",
data: "mode=fetch",
success: function(data){
record = data;
}
});
}
3) 「desc」要素を変更し、php プログラムに戻してドキュメントを保存します。
function save(){
record.desc=" HELLO THERE FELLA";
jString = encodeURIComponent(JSON.stringify(record));
myData = "mode=save&record="+jString;
url = "sbugger.php";
$.ajax({
url: url,
type: 'POST',
data: myData,
success: function(data){
document.write(data);
} });
}
PHP側のコードは次のとおりです。
$stuff = json_decode($_REQUEST["record"],true);
$collection->save($stuff);
var_dump($stuff);
var_dump($db->lastError());
$id を変更しなかったので、これは単にレコードをその場で更新するだけだと思います。
代わりに、次の var_dump を取得します。
object(stdClass)[4]
public '_id' =>
object(stdClass)[5]
public '$id' => string '500d9f072d854e2001000018' (length=24)
public 'field1' => string 'happenstance' (length=12)
public 'mydata' => string 'balls grinders' (length=15)
public 'desc' => string ' HELLO THERE FELLA' (length=18)
そしてこのlastErrorメッセージ
配列 'err' => 文字列 '無効な演算子: $id' (長さ = 21) 'code' => int 10068 'n' => int 0 'lastOp' => object(MongoTimestamp)[8] public 'sec' = > int 1343070014 public 'inc' => int 1 'connectionId' => int 56143 'ok' => float 1
私はこれで1.5日間頭を壁にぶつけています。
MongoDB の専門家が助けてくれますか?
PS私がphpプログラムだけにとどまっている場合、検索と保存は完全に機能します。json をやり取りするときに問題があるようです。