Récupérer données lors d'un INSERT

Toufinet
Invité n'ayant pas de compte PHPfrance

11 juil. 2006, 09:53

Bonjour,

Voilà, je voulais savoir 2 choses :
1° Es-ce qu'il est possible, au même titre qu'on peut paramètrer un champ en auto-incrémentation, de paramètrer en champ en random ?
Exemple :
Je crée un champ d'entiers de longueur 4 : id
J'insert des données dans la table.
Es-ce que MySQL peut "randomiser" le champ id, en faisant attention à ce qu'il n'y ai pas de doublon ?
Il est possible de le faire en PHP, mais ça me semble un peu lourd, donc si MySQL peut s'en charger, ce serait génial !

2° Es-t'il possible de directement récupérer la valeur d'un champ après un insert ?
Exemple :
J'ai un champ id, en autoincrémentation ( ou en random, si ma question 1° a une solution :D ) ).
J'exécute une requette genre : "INSERT INTO table VALUES ( '' )"
Comment récupérer la valeur de id qui a été attribuée directement ?
Idem que pour la question 1°, c'est faisable en PHP, mais ce n'est pas suffisament fiable pour mon application.

Voilà, merci d'avance à qui saura m'aider :)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

11 juil. 2006, 11:40

1 - Pourquoi faire ?

2 - Oui, avec une colonne auto increment...
Avec un identifiant généré aléatoirement je ne vois pas quel moyen tu pourrais avoir de savoir que c'est la dernière ligne enregistrée, sauf avec une date...

Toufinet
Invité n'ayant pas de compte PHPfrance

11 juil. 2006, 12:36

Bon ok, on va abandonner le 1.
En fait le but est de créer des login. Les mettre aléatoirement aurait rajouté une chouquette de sécurité, m'enfin, pas grave.

Pour le 2° , puisque c'est possible, comment faire ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

11 juil. 2006, 13:31

Pour le 1, tu peux bien créer des logins mais garder un identifiant numérique autoincrémenté non ?

Pour le 2 :

Code : Tout sélectionner

SELECT LAST_INSERT_ID()
ou mysql_insert_id()

Cette réponse a déjà été donnée environ 200 fois sur le forum, cherche la prochaine fois :)

Toufinet
Invité n'ayant pas de compte PHPfrance

12 juil. 2006, 18:43



Bah oui, mais il ne faut pas qu'il existe 2 mêmes login ..
Donc soit dans un boucle je génère un login aléatoirement avec PHP, jusqu'à temps d'en trouver un qui n'existe pas déjà ( je trouve cette méthode vraiment très lourde )
Soit mysql est mon ami :) ... mais ça n'a pas l'air d'être le cas :(


Merci, désolé, je ne savais pas vraiment quoi chercher.

Eléphant du PHP | 332 Messages

13 juil. 2006, 10:16

Pour ton problème de doublon : tu mets un index unique sur la colonne logon. Si tu tentes d'insérer un doublon, tu auras une erreur :
Tu inclues donc ton INSERT dans une boucle

Code : Tout sélectionner

REPETER générer un login aléatoirement INSERT ... lire erreur MySQL TANT QU'il y a une erreur

Toufinet
Invité n'ayant pas de compte PHPfrance

13 juil. 2006, 17:21

oui ok, ce sera la meilleure solution je pense.

Merci beaucoup de votre aide ;)