->insert() – Insert les variables de l'objet courant dans la base de données


mixed $DB_DataObject->insert ( )


Insert les données dans la base de données, en se basant sur les valeurs des variables de l'objet courant et retourne l'ID des éléments insérés si les séquences ou les clés primaires sont utilisées. Les valeurs sont correctement échappées et quelques vérifications sont effectuées.

Avec MySQL, la méthode mysql_next_id() est utilisée ; avec les autres bases de données, la méthode de séquence PEAR DB sequence method est utilisée.

Notez que insert() peut ne pas retourner un ID correct dans quelques situations :

  • Si le gestionnaire de base de données ne le supporte pas.

  • Le générateur ne marque pas le flag de la bonne colonne comme autoincrement/nextval

  • Une erreur survient (activer le débogage pour la voir)

  • L'insertion échoue ou aucune ligne n'est affectée

Return value

mixed - l'ID ou la clé


Possible PEAR_Error values
Code erreur Message d'erreur Signification Solution
DB_DATAOBJECT_ERROR_INVALIDCONFIG "insert:No table definition for $table"
DB_DATAOBJECT_ERROR_NODATA "insert: No Data specifed for query"
DB_* * Voir PEAR::DB Voir PEAR::DB


This function can not be called statically.


Insertion simple

= new DataObjects_Person;
$id $person->insert();

SQL résultant

(nameVALUES ('fred');
Effectue une requête count() (Previous) Met à jour les variables des objets dans une base de données (Next)
Last updated: Sun, 29 Aug 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: del@babel.com.au
Here is how to fetch the error message:

$my_id = $my_object->insert();
if ($my_id) {
debug("I just inserted record ID " . $my_id);
} else {
$error = &PEAR::getStaticProperty('DB_DataObject','lastError');
$debug("DB_DataObject Error: " . $error->getMessage() );
Note by: nailz420@gmail.com
Is there a way to get the database error code and message? For example, I would like to be able to check for error code 1062 on duplicate key error in a mysql db. Where would that value be stored?
Note by: Charlie Shin
I spent at least 3 days to find out why there is extra table with additional "_seq" in my database. I finally realize it is created because sequenceKey(). I don't know why bother to find sequenceKey() if my table is no need sequence key? This feature should not set by flag or option, otherwise I have to manually add in return array(false, false) each time after if package upgrade?
Note by: pierre2543@hotmail.com
By default insert() will populate key fields automatically. If you want to manage your own keys, override sequenceKey() in your DO as follows:

function sequenceKey(){
return array(false,false);