Quels résultats puis-je obtenir d'une requête?
<<<
Comment lire l'identifiant unique de la dernière ligne insérée Problèmes lors de la liaison avec l'API C
>>>

21.2.12 Questions courantes sur la bibliothèque C
21.2 API MySQL C
21 API MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Pourquoi est-ce que mysql_store_result() retourne parfois NULL après que mysql_query() ait réussi
Quels résultats puis-je obtenir d'une requête?
->Comment lire l'identifiant unique de la dernière ligne insérée
Problèmes lors de la liaison avec l'API C

21.2.12.3 Comment lire l'identifiant unique de la dernière ligne insérée

Si vous insérez une ligne dans une table qui contient une colonne ayant l'attribut AUTO_INCREMENT , vous pouvez obtenir le dernier identifiant généré en appelant la fonction mysql_insert_id() .

Vous pouvez aussi récupérer cet identifiant en utilisant la fonction LAST_INSERT_ID() dans une requête que vous passez à mysql_query() .

Vous pouvez vérifier qu'un index AUTO_INCREMENT est utilisé en exécutant le code suivant. Cela vérifiera aussi si la requête était un INSERT avec un index AUTO_INCREMENT :

if (mysql_error(&mysql)[0] == 0 &&
    mysql_num_fields(result) == 0 &&
    mysql_insert_id(&mysql) != 0)
{
    used_id = mysql_insert_id(&mysql);
}
Pour plus d'informations, voyez la section mysql_insert_id() .Lorsqu'une nouvelle valeur AUTO_INCREMENT est générée, vous pouvez l'obtenir en utilisant la commande SELECT LAST_INSERT_ID() avec mysql_query() et en lisant la valeur dans le résultat obtenu.

Pour LAST_INSERT_ID() , l'identifiant généré par la dernière insertion est entretenu sur le serveur en se basant sur la connexion. Il ne sera pas changé par un autre client. Il ne changera pas non plus si vous mettez à jour une autre colonne AUTO_INCREMENT avec une valeur normale (ni NULL ni 0 ).

Si vous voulez utiliser l'identifiant généré pour une table et l'insérer dans une autre, vous pouvez utiliser les requêtes suivantes :

INSERT INTO foo (auto,text)
    VALUES(NULL,'text');              # génère un identifiant en insérant NULL
INSERT INTO foo2 (id,text)
    VALUES(LAST_INSERT_ID(),'text');  # on l'utilise dans la seconde page
Notez que mysql_insert_id() retourne la valeur stockée dans une colonne AUTO_INCREMENT , que cette valeur ait été générée automatiquement en enregistrant NULL ou 0 ou une valeur explicite. LAST_INSERT_ID() retourne les valeurs générées automatiquement par AUTO_INCREMENT . Si vous stockez une valeur explicite, autre que NULL ou 0 , cela n'affecte pas le résultat de LAST_INSERT_ID() .

<< Comment lire l'identifiant unique de la dernière ligne insérée >>
Quels résultats puis-je obtenir d'une requête? Questions courantes sur la bibliothèque C Problèmes lors de la liaison avec l'API C