La génération aléatoire d'ID unique à l'aide de PHP
J'ai une table qui ressemble à ceci. C'est une partie de l'information générale, lorsqu'un utilisateur s'inscrit sur mon site.
+------------+------------+
| user_id | username |
| 312543 | Bobby |
| 543765 | Victoria |
+------------+------------+
Que je me demande, comment voulez-vous générer un hasard unique nombre de user_id
? Disons un nombre entre 1 et 100 qui n'est pas encore dans la base de données. Je veux accomplir cela en utilisant PHP, SQL.
Demandez-vous comment générer un ID unique à l'aide de PHP?
Pourquoi pas un simple
choisir un nombre aléatoire dans l'intervalle, le test, il est unique et si ne pas répéter jusqu'à ce qu'il est MAIS: assurez-vous que thera un nombre inutilisé dans la gamme
Je ne veux juste pas le user_id lui-même dans l'ordre
Vous allez avoir à être BEAUCOUP plus précis. Pourquoi ne voulez-vous pas dans l'ordre? Voulez-vous empêcher les gens de deviner ce qui pourrait être un id utilisateur valide? (ce qui a peu de valeur en tant que mesure de sécurité). Combien de disques avez-vous attendre? Comment grand une valeur (caractères/chiffres) est-elle appropriée? Quelles sont les contraintes sont là, sur le type de données?
Pourquoi pas un simple
AUTO_INCREMENT
? Ce serait le meilleur pari. Aléatoire Id sont sujettes à répétition.choisir un nombre aléatoire dans l'intervalle, le test, il est unique et si ne pas répéter jusqu'à ce qu'il est MAIS: assurez-vous que thera un nombre inutilisé dans la gamme
Je ne veux juste pas le user_id lui-même dans l'ordre
Vous allez avoir à être BEAUCOUP plus précis. Pourquoi ne voulez-vous pas dans l'ordre? Voulez-vous empêcher les gens de deviner ce qui pourrait être un id utilisateur valide? (ce qui a peu de valeur en tant que mesure de sécurité). Combien de disques avez-vous attendre? Comment grand une valeur (caractères/chiffres) est-elle appropriée? Quelles sont les contraintes sont là, sur le type de données?
OriginalL'auteur Bono | 2014-04-12
Vous devez vous connecter pour publier un commentaire.
De l'amélioration Niet de l'Obscurité Absol réponse: Vous pouvez utiliser
uniqid(rand())
.uniqid()
va générer un nombre en fonction de votre serveur interne de l'horloge et de larand()
sera préfixe avec un nombre aléatoire. Ainsi, même si deux utilisateurs de s'inscrire dans la même fraction minime, lerand()
préfixe verront attribuer un préfixe différent avec plus de 99.99999% de probabilité.le uniqid() est déjà à l'aide de l'horodatage
OriginalL'auteur Crashh
Vous pouvez utiliser PHP
uniqid
fonction. Ce n'est pas aléatoire (il est basé sur l'horloge du serveur) mais à moins d'avoir deux personnes de s'inscrire dans le même minuscule fraction de seconde, puis il sera assuré d'être unique et il est non-séquentielle.-1 parce que le docs états: Cette fonction ne permet pas de garantir l'unicité de la valeur de retour
OriginalL'auteur Niet the Dark Absol
Tout d'abord, je suis d'accord avec @Shankar Damodaran, c'est beaucoup mieux d'utiliser
AUTO_INCREMENT
plutôt qu'au hasard Id parce que si vous commencez à l'aide de random, alors vous pourriez avoir à vérifier en premier lieu si l'ID aléatoire existe déjà, et puis choisir un autre au hasard et vérifier de nouveau jusqu'à ce que vous obtenez finalement un unique.Et si vous voulez vraiment être aléatoires, vous pouvez utiliser le PHP
rand
fonction: http://www.php.net/manual/en/function.rand.phpOriginalL'auteur Always Learning Forever
OriginalL'auteur Patrick
Doc PHP :
En d'autres termes , si votre script est en cours d'exécution avec des processus parallèle , tu risques d'avoir le même id unique. donc, je peux vous dit qu'il est impossible d'avoir 100% de id unique , mais nous pouvons augmenter la probabilité comme l'utilisation d'autres fonctions comme :
rand , et la more_entropy (le second paramètre de la fonction uniqid)
Ne pas oublier que nous sommes seulement une augmentation de la probabilité d'avoir des id unique .
Peut être à 99,99% d'unicité.
OriginalL'auteur Mohammed Yassine CHABLI
Avec php u peux faire comme cela.
indice, il ne sera probablement pas. Cette réponse est à la moitié du chemin, Vous devez vérifier dans la base de données pour s'assurer qu'il est unique.
Ouais u besoin de vérifier sur sql si l'id existe déjà x')
OriginalL'auteur user2942910