tags:

views:

106

answers:

1

I think the title pretty much says it all.

I'm working with Mongodb in PHP using the pecl driver. My updates are working great, but I'd like to build some error checking into my funciton(s).

I've tried using lastError() in a pretty simple function:

function system_db_update_object($query, $values, $database, $collection) {
    $connection = new Mongo();
    $collection = $connection->$database->$collection;
    $connection->$database->resetError(); //Added for debugging
    $collection->update(
        $query,
        array('$set' => $values));
    //$errorArray = $connection->$database->lastError();
    var_dump($connection->$database->lastError());exit; // Var dump and /Exit/
}

But pretty much regardless of what I try to update (whether it exists or not) I get these same basic results:

array(4) {
  ["err"]=>
  NULL
  ["updatedExisting"]=>
  bool(true)
  ["n"]=>
  float(1)
  ["ok"]=>
  float(1)
}

Any help or direction would be greatly appreciated.

+1  A: 

the "n" field is the number of documents that were updated, and "updatedExisting" tells whether any document was updated at all. you should be able to check those fields to see whether an update succeeded or not.

mdirolf
That's not quite what I meant. The above code will gleefully update the database regardless of what I put into the $values array, whether the key exists or not (if it doesn't it simply add the value/key pair to the document).Re-reading the php.net documentation I came across the "safe" option and added it to the above code so it now looks like this:$collection->update($query, array('$set' => $values), array("safe" => true));But I still get the same results (NULL, true, 1, 1) each time I intentionally do a garbage update.
zmg