153 votes

Comment lire l’identifiant de la ligne dernière mise à jour de MySQL ?

Comment puis-je obtenir l’ID de la ligne dernière mise à jour de MySQL à l’aide de PHP ?

261voto

Pomyk Points 1506

J’ai trouvé une réponse à ce problème  :)

Modifier par aefxx

Cette technique peut être étendue pour récupérer l’ID de chaque rang affectée par une instruction de mise à jour :

Ceci renverra une chaîne avec tous les identifiants concaténées par un signe deux-points.

37voto

newtover Points 12301

Hm, je suis surpris que, parmi les réponses, je ne vois pas la solution la plus simple.

Supposons, item_id est un entier de la colonne d'identité en items tableau et de mettre à jour les lignes avec la déclaration suivante:

UPDATE items
SET qwe = 'qwe'
WHERE asd = 'asd';

Alors, pour connaître la dernière ligne droite après la déclaration, vous devez légèrement mise à jour la déclaration suivante:

UPDATE items
SET qwe = 'qwe',
    item_id=LAST_INSERT_ID(item_id)
WHERE asd = 'asd';
SELECT LAST_INSERT_ID();

Si vous avez besoin de mettre à jour n'a vraiment changé de ligne, vous devez ajouter une condition de mise à jour de la item_id par le biais de la LAST_INSERT_ID de vérifier si les données vont changer dans la ligne.

11voto

Chad von Nau Points 1547

C'est la même méthode que Salman Une réponse, mais voici le code que vous avez réellement besoin de le faire.

Tout d'abord, l'édition de votre tableau, de sorte qu'il conserve automatiquement la trace de chaque fois qu'une ligne est modifiée. Supprimer la dernière ligne si vous ne souhaitez savoir quand une ligne a été insérés.

ALTER TABLE mytable
ADD lastmodified TIMESTAMP 
    DEFAULT CURRENT_TIMESTAMP 
    ON UPDATE CURRENT_TIMESTAMP;

Ensuite, pour trouver la dernière mise à jour en ligne, vous pouvez utiliser ce code.

SELECT id FROM mytable ORDER BY lastmodified DESC LIMIT 1;

Ce code est tous levé de MySQL vs PostgreSQL: Ajout d'un 'Dernière modification' Colonne à une Table et Manuel MySQL: le Tri des Lignes. J'ai juste assemblé.

7voto

Requête :

Fonction PHP :

C’est de travailler pour moi  ;)

2voto

Salman A Points 60620

mysql insert id la fonction retourne l'IDENTIFIANT généré pour une colonne de type AUTO_INCREMENT par la précédente requête d'INSERTION. Cependant, il n'existe pas de fonction correspondante pour obtenir la "dernière mise à jour en ligne" en php.

Une possibilité est d'utiliser le mysql TIMESTAMP colonne "mise à JOUR CURRENT_TIMESTAMP" ensemble. La colonne est modifiée à l'heure actuelle par mysql sur toute modification pour chaque enregistrement, de sorte que vous pouvez trier par cette colonne pour obtenir le récemment enregistrement modifié. Vous devez lire la documentation soigneusement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X