Pracuję z MongoDB w PHP przy użyciu sterownika pecl. Moje aktualizacje działają znakomicie, ale chciałbym utworzyć pewne sprawdzanie błędów w moich funkcjach.Aktualizacja MongoDB: jak sprawdzić, czy aktualizacja się powiedzie lub się nie powiedzie?
Próbowałem za pomocą lastError() w dość prostej funkcji:
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/
}
Ale dość dużo, niezależnie od tego, co staram się aktualizować (czy istnieje, czy nie) uzyskać te same podstawowe wyniki:
array(4) {
["err"]=>
NULL
["updatedExisting"]=>
bool(true)
["n"]=>
float(1)
["ok"]=>
float(1)
}
Skąd wiadomo, czy aktualizacja się powiodła, czy nie?
To nie do końca miałem na myśli. Powyższy kod z radością zaktualizuje bazę danych niezależnie od tego, co wstawię do tablicy $ values, niezależnie od tego, czy klucz istnieje, czy nie (jeśli nie, po prostu dodaj parę wartość/klucz do dokumentu). Ponowne czytanie dokumentacji php.net Natknąłem się na "bezpieczną" opcję i dodałem ją do powyższego kodu, więc wygląda teraz tak: $ kolekcja-> aktualizacja (zapytanie $, tablica ('$ zestaw' = > $ wartości), array ("safe" => true)); Ale nadal otrzymuję takie same wyniki (NULL, true, 1, 1) za każdym razem, gdy celowo przeprowadzam aktualizację śmieci. – zmg