Votre question

[résolu]Vérifier existaence d'une clé primaire

Tags :
  • table
  • Programmation
Dernière réponse : dans Programmation
19 Mai 2009 16:04:37

salut, je voudrais, en php, voir si il existe une clé primaire définie dans une table mysql
je fais un describe matable mais ensuite je ne sais pas comment voir s'il y a une clé.
merci d'avance de votre aide

Autres pages sur : resolu verifier existaence cle primaire

19 Mai 2009 16:31:54

  1. mysql> DESCRIBE *******;
  2. +------------+--------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +------------+--------------+------+-----+---------+----------------+
  5. | id | int(11) | NO | PRI | NULL | auto_increment |
  6. | **** | varchar(255) | NO | | | |
  7. | **** | int(11) | NO | | | |
  8. | ***** | varchar(10) | NO | | offline | |
  9. | ****** | binary(1) | YES | | 0 | |
  10. +------------+--------------+------+-----+---------+----------------+
  11. 5 rows in set (0.00 sec)


Le PRI signifie Primaire.
19 Mai 2009 16:38:21

merci beaucoup, si j'ai bien pigé voila :
$query1="DESCRIBE $nameTable";
$retour = mysql_query($query1) or die (mysql_error()."<br /><br />".$query1);
$cle_primaire = '';
while($donnees = mysql_fetch_array($retour))
{
if($donnees['key'] == 'PRI'){
$cle_primaire = $donnees['Field']; //Nom de la colonne
break;
}
}
if($cle_primaire!="")
{
//ici il y a une clé primaire définie
}
else //ici pas de clé primaire

mais ça ne marche pas, j'ai essayé des affichages dans les if mais il ne trouve jamais de clé primaire alors que j'en ai mis en bdd, je tombe toujours dans le else
Contenus similaires
19 Mai 2009 16:42:34

Pour fair ese genre de chose il est préférable d'utiliser la base de donnée "information_shema" elle est fait pour ça.

fait un print_r de $donnees :
  1. echo "<pre>"; print_r($donnees);echo "</pre>";
19 Mai 2009 16:48:10

hé c'est super bien ce truc!!
voila le résultat
  1. Array
  2. (
  3. [0] => pseudo
  4. [Field] => pseudo
  5. [1] => text
  6. [Type] => text
  7. [2] => NO
  8. [Null] => NO
  9. [3] => PRI
  10. [Key] => PRI
  11. [4] =>
  12. [Default] =>
  13. [5] =>
  14. [Extra] =>
  15. )
  16.  
  17. Array
  18. (
  19. [0] => passe
  20. [Field] => passe
  21. [1] => text
  22. [Type] => text
  23. [2] => NO
  24. [Null] => NO
  25. [3] =>
  26. [Key] =>
  27. [4] =>
  28. [Default] =>
  29. [5] =>
  30. [Extra] =>
  31. )
  32.  
  33. Array
  34. (
  35. [0] => ff
  36. [Field] => ff
  37. [1] => text
  38. [Type] => text
  39. [2] => NO
  40. [Null] => NO
  41. [3] =>
  42. [Key] =>
  43. [4] =>
  44. [Default] =>
  45. [5] =>
  46. [Extra] =>
  47. )

donc pseudo est bien clé primaire, pourquoi il ne le trouve pas alors?
19 Mai 2009 16:49:40

Donc c'est pas $donnees['key'] mais $donnees['Key'] ...

au passage, remplace mysql_fetch_array par mysql_fetch_assoc car tu éviteras d'avoir en double ton tableau $donnees (array est la fusion de assoc et row).
19 Mai 2009 16:49:56

Citation :
donc pseudo est bien clé primaire, pourquoi il ne le trouve pas alors?

parce que je n'ai pas mis une majuscule à 'key'.
quelle journée!
merci de ton aide
19 Mai 2009 16:50:32

tu m'as devancé désolé!
ok pour la fonction
19 Mai 2009 16:51:48

Au passage, je ne sais pas où tu vas héberger ton application, mais fait attention d'avoir le droit de faire des describe ... tu pourrais avoir des surprises.
19 Mai 2009 16:54:49

ça sera hébergé sur un serveur OVH, pourquoi?qu'est ce qu'elle a cette instruction describe de méchant?
19 Mai 2009 17:04:05

Ca comment à être des droits un peu avancé.

Le top pour une appli c'est de laisser juste les droits CRUD Soit : Create, Read (ou Retrieve), Update et Delete (ou Destroy). [src : Wikipedia]. On évite ainsi tout problème de sécurité. On peut même imaginer n'avoir que des droits en lecture ...

Après un passage il semble que tous les utilisateurs aient le droit d'effectuer un DESCRIBE, mais c'est absurde de laisser son schéma aussi visible.

Si tu veux un peu plus d'info sur le sujet, va voir du coté de PHPMyAdmin dans "Privilège", tu veras que tu peux creer des utilisateurs avec des droits différents. On ne mettera par exemple jamais des droits d'administration à une application web. (enfin, on le fait quand on met PHPMyAdmin mais bon, on met pas les droits n'importent comment aux gens qui y ont accès).

20 Mai 2009 08:03:36

non mais l'application sera protégé par des sessions donc seul l'administrateur pourra faire ce genre de choses, les autres pouvant faire de la consultation
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS