J'ai une base de données avec un champ d'incrémentation automatique. Je veux récupérer la valeur de la colonne Auto increment chaque fois que j'insère un enregistrement dans la base de données. J'utilise mysql comme base de données et PHP comme langage de programmation. J'ai essayé d'utiliser la fonction mysql_insert_id() mais cela ne convient pas quand il y a un grand nombre d'insertions se déroulant au même moment. Je veux récupérer la valeur de la colonne AI parce que je stocke un fichier pour l'enregistrement respectif et comme je stocke les fichiers dans un seul répertoire j'ai besoin que le nom du fichier soit unique. Un autre moyen de faire la même chose?Récupère l'ID d'incrémentation automatique de la base de données mysql
Répondre
Il doit être sûr pour vous d'utiliser mysql_insert_id(), car elle retourne la dernière valeur AI Inséré de la connexion actuelle (voir php.net). Donc, tant que vous appelez la méthode juste après la requête INSERT dans votre script, il n'y aura pas de conditions de concurrence, même si votre script s'exécute simultanément plusieurs fois.
Utilisez uniqid() pour le nom de fichier. "Obtient un identifiant unique préfixé basé sur l'heure actuelle en microsecondes."
Jetez un oeil ici php.net/manual/en/function.uniqid.php
Merci. Cela m'a vraiment aidé. – KOR
vous pouvez également générer un numéro unique à l'aide uniqid(), l'insérer dans la table et utiliser le même pour le nom de fichier.
pour un seul insert, vous pouvez le faire en une seule statementto vous assurer d'obtenir la bonne valeur
Pseudo Code:
$query = "INSERT INTO TABLE1 VALUES(null, 'test')";
$id = mysql_execute("$query; SELECT LAST_INSERT_ID();"
Une autre façon pourrait être de manuelly Ids.
disons que vous voulez ajouter 1000 lignes
1. query current ai value and store value
2. alter table set ai value = current + 1000;
3. make your inserts with setting ai value manually
INSERT INTO TABLE1 VALUES ($id, 'test$id');
Une autre façon de récupérer l'ID du dernier insert en utilisant SQL:
SELECT id FROM table ORDER BY id DESC LIMIT 1
'SELECT MAX (id) FROM table;' est plus court et sans tri. –
Cette méthode est dangereuse lorsque la connexion simultanée insère ses propres lignes. –
mais c'est une déclaration SQL supplémentaire, et il a déjà dit qu'il est préoccupé par la performance. – Nikola
- 1. Express.js - Récupère une ligne de la base de données MySQL
- 2. base de données mysql partitionnement automatique
- 3. Base de données de répliques automatique de la base de données mySql pour la sauvegarde?
- 4. Récupère les données de la base de données
- 5. Récupère les données antérieures de la base de données Sqlite3
- 6. Récupère la valeur de la date et stocke-la dans la base de données MySQL?
- 7. Comment installer le Lingua :: Lid de Perl?
- 8. Base de données MySql Dump
- 9. Application de synchronisation automatique iOS (Objective-C) base de données locale avec base de données MySQL
- 10. simplepie - Récupère flux de base de données
- 11. Récupère la valeur sélectionnée de la base de données
- 12. La base de données MySQL n'indexe pas
- 13. La base de données IOS ne récupère pas les données
- 14. Insertion automatique de la base de données API?
- 15. Récupère l'index du contrôle de la base de données
- 16. jquery récupère les anciennes valeurs de la base de données
- 17. Récupère plusieurs valeurs de la base de données ASP.NET/C#
- 18. Récupère uniquement l'horodatage Date de la base de données
- 19. Base de données Wordpress dans la base de données MySQL?
- 20. Récupère correctement les valeurs de la base de données mysql en hindi
- 21. Erreur lors de l'extraction de la base de données mysql dans la base de données mysql locale
- 22. Connexion de la base de données mysql distante à la base de données mysql locale?
- 23. Détection automatique d'instances de base de données
- 24. Reconnexion automatique de la connexion à la base de données
- 25. Opencart: la requête MySQL dans le modèle de rapports ne récupère pas les données de la base de données
- 26. Rails: Adaptateur de base de données à détection automatique
- 27. Reconnexion automatique JBoss avec la base de données au redémarrage de la base de données/déconnexion
- 28. Synchronisation automatique de base de données
- 29. Ajustement automatique Entrées de base de données?
- 30. Powershell Set Lid Close Action
C'est exactement ce que je cherchais. Merci de votre aide. :) – KOR