2010-11-21 4 views
1

J'essaie de créer une base de données MySQL qui contiendra tous mes utilisateurs et connexions.Valeur unique dans la base de données MySQL

Les colonnes du tableau sont: user_id passkey des points

Le user_id de chaque utilisateur doit être unique, et même avec leur code d'accès. Points est juste une valeur entière que je vais éditer de temps en temps. Maintenant, quand je reçois un utilisateur sur mon site, je dois vérifier s'il est un nouvel utilisateur ou un ancien. Je vérifie en voyant si leur user_id est déjà dans la base de données, et sinon, je crée une nouvelle entrée à la table qui entre leur user_id, passkey, et 0 pour les points. Donc, quand je crée la table, est-ce que je dois encore spécifier unique pour user_id et passkey, même si je vais vérifier d'abord avant de créer de nouvelles entrées?

Et comment vérifier si le user_id est déjà dans le système? Je pense à quelque chose comme: SELECT * FROM clients WHERE user_id = 'test'

Ensuite, comptez les lignes, et si c'est zéro, je crée une nouvelle entrée, non? J'essaie de m'assurer que tout se passe bien avant d'exécuter mon code. Merci.

+1

Vous pouvez faire une requête directe, 'SELECT COUNT (*) ...', plutôt que de renvoyer * tout * les lignes et * compter * vos résultats. –

Répondre

1

Il est une bonne idée de marquer de toute façon les champs comme UNIQUE, parce que dans le cas où vous manquez quelque chose dans votre code, le DB va toujours attraper l'erreur avant que les choses tombent en panne. Je ne sais pas pourquoi vous voulez que la clé soit unique, y a-t-il un problème avec deux utilisateurs ayant la même clé?

Votre requête est très bien, mais je suppose que vous n'avez pas vraiment besoin des détails réels des utilisateurs lors de la vérification, de sorte que vous pouvez simplement demander le nombre:

SELECT COUNT(*) FROM customers WHERE user_id='test' 

et si la valeur retournée est> 0, le user_id existe déjà.

+0

Bien, maintenant pourriez-vous me dire aussi, quand je crée une nouvelle entrée, et j'ajoute également un 4ème paramètre, une date, comment définir un défaut pour ce 4ème paramètre à hier (le jour avant que l'entrée a été créée) ? – LostInTheCode

+1

@ ShadowX360: Il est plus simple de le faire en PHP en utilisant 'strtotime ('hier')' et de passer la valeur d'horodatage à la base de données. – casablanca

1

Vous devez spécifier des incréments uniques et automatiques de sorte que vous remplissiez juste NULL et il le fait pour vous.

Cependant, je craindrais que vous devriez avoir les noms d'utilisateur et ... des clés d'accès

1

Définissez d'abord la valeur par défaut du champ de mot de passe à 0. Ensuite, pour l'ID_utilisateur, faites-le auto_increment. Cela augmentera d'une unité chaque fois qu'une nouvelle ligne est ajoutée (par exemple un nouvel utilisateur). Vous n'aurez pas besoin de vérifier si user_id se trouve dans le système lorsque vous l'insérez dans la base de données.

Lors de l'insertion, il suffit de spécifier la clé d'accès, il s'agit probablement du mot de passe de l'utilisateur. Toutes les modifications de champs peuvent être effectuées dans phpMyAdmin, sous Structure pour votre tableau.

Questions connexes