J'ai trouvé quelques réponses pour cela en utilisant uniquement MySQL, mais j'espérais que quelqu'un pourrait me montrer un moyen d'obtenir l'ID de la dernière ligne insérée ou mise à jour de une base de données MySQL lors de l'utilisation de PHP pour gérer les insertions/mises à jour.get mysql_insert_id() lors de l'utilisation de ON DUPLICATE KEY UPDATE avec PHP
Actuellement, j'ai quelque chose comme ça, où colonne3 est une clé unique, et il y a aussi une colonne id qui est une clé primaire auto:
$query ="INSERT INTO TABLE (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE SET column1=value1, column2=value2, column3=value3";
mysql_query($query);
$my_id = mysql_insert_id();
mon_id $ est correct sur INSERT, mais incorrect quand il mettre à jour un row (SUR LA MISE À JOUR DE LA CLÉ DUPLICATE).
J'ai vu plusieurs postes avec des personnes indiquant que vous utilisez quelque chose comme
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)
pour obtenir une valeur d'identité valide lorsque le Duplicate KEY est invoked-- mais ce retour sera qu'une pièce d'identité valide au PHP mysql_insert_id()
fonction?
Je n'ai pas la réponse. Mais la solution semble intelligente. Pourquoi ne l'essayez-vous pas? Je pense qu'il ne devrait pas être trop difficile de créer un test qui donnerait une réponse définitive. PS: Ne vous méprenez pas si; Je peux comprendre que vous voulez être rassuré. Je le ferais probablement aussi. Mais je l'essaierais d'abord je suppose. :) –
J'étais curieux de savoir comment cela pouvait fonctionner mais je l'ai trouvé dans le manuel de MySQL: * Si expr est donné en argument à LAST_INSERT_ID(), la valeur de l'argument est retournée par la fonction et est mémorisée comme valeur suivante être renvoyé par LAST_INSERT_ID() *. –
@Alexandre: oui, et en supposant que mysql_insert_id() 'est juste un proxy pour' LAST \ _INSERT \ _ID() 'je pense que cela devrait fonctionner comme prévu. –