[PHP]Récupérer le nom de la clé Primaire
Résolu
Mouradif
Messages postés
25
Date d'inscription
Statut
Membre
Dernière intervention
-
Dr Zoidberg Messages postés 529 Date d'inscription Statut Membre Dernière intervention -
Dr Zoidberg Messages postés 529 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
Je suis en train de coder un projet qui me tient à cœur et comme j'ai pas l'habitude de bosser en POO, j'ai créé une série de fonctions pour faciliter le code (surtout si d'autres membres veulent rejoindre l'équipe de développement). Dans ce cadre, j'aimerais savoir si il existe une fonction php qui récupère le nom de la clé primaire d'une table. Sinon, si quelqu'un peut me proposer un bout de code qui pourrait le faire. J'ai commencé comme ça :
voilà, donc déjà pour savoir si une fonction mysql_ existe déjà en php pour récupérer le nom de la clé primaire d'une table, et à défaut, une fonction sur array qui récupère le nom de la première clé.
Merci d'avance à tous !
Je suis en train de coder un projet qui me tient à cœur et comme j'ai pas l'habitude de bosser en POO, j'ai créé une série de fonctions pour faciliter le code (surtout si d'autres membres veulent rejoindre l'équipe de développement). Dans ce cadre, j'aimerais savoir si il existe une fonction php qui récupère le nom de la clé primaire d'une table. Sinon, si quelqu'un peut me proposer un bout de code qui pourrait le faire. J'ai commencé comme ça :
<?php function prim($table) { $sql = "Select * from `$table` ;" ; $req = mysql_query($sql) ; /* Là, je récupere le premier enregistrement (ou peu importe lequel) de ma table sous forme de tableau */ $data = mysql_fetch_array($req) ; /* Et là je ne sais pas quel fonction utiliser pour récupérer le nom de la première $key du array $data... */ } ?>
voilà, donc déjà pour savoir si une fonction mysql_ existe déjà en php pour récupérer le nom de la clé primaire d'une table, et à défaut, une fonction sur array qui récupère le nom de la première clé.
Merci d'avance à tous !
A voir également:
- [PHP]Récupérer le nom de la clé Primaire
- Clé usb non détectée - Guide
- Clé windows 8 - Guide
- Recuperer message whatsapp supprimé - Guide
- Recuperer cle windows - Guide
- Formater clé usb - Guide
3 réponses
Salut,
Utilise describe:
http://dev.mysql.com/doc/refman/5.0/fr/describe.html
Un exemple avec une table qui s'appele machin:
Utilise describe:
http://dev.mysql.com/doc/refman/5.0/fr/describe.html
Un exemple avec une table qui s'appele machin:
$res = mysql_query('DESCRIBE machin'); $primary_key = ''; while($line = mysql_fetch_array($res)) { if($line['key'] == 'PRI'){ $primary_key = $line['Field']; //Nom de la colonne concernée break; } }
Salut,
Je ne connais pas php mais je peux déjà te dire que tu n'arriveras pas à trouver le nom de la clé de la table comme ça. En effet, dans $data tu retrouves la valeur des champs de la table et pas la définition de la table elle-même
Je ne connais pas php mais je peux déjà te dire que tu n'arriveras pas à trouver le nom de la clé de la table comme ça. En effet, dans $data tu retrouves la valeur des champs de la table et pas la définition de la table elle-même
:D Merci beaucoup kilian, je ne conaissais pas la fonction DESCRIBE en SQL. Si j'ai bien compris, elle retourne le nom des champs d'une table ?
En fait, j'ai cherché parmi les fonctions sur les arrays et j'ai trouvé une solution plus simple.
D'abord, pour répondre à BlueMind, si tu fais un print_r de $data tu trouves
or, le fruit de mes recherches m'a mené à la fonction array_keys($array) qui agit comme DESCRIBE mais sur un array. Je fais :
Ca me donne :
donc pour la fonction complète au cas où quelqu'un d'autre en aie besoin :
En fait, j'ai cherché parmi les fonctions sur les arrays et j'ai trouvé une solution plus simple.
D'abord, pour répondre à BlueMind, si tu fais un print_r de $data tu trouves
[0] => Valeur du champs 1 [Nom du champs 1] => Valeur du champs 1 [1] => Valeur du champs 2 [Nom du champs 2 => Valeur du champs 2 etc...
or, le fruit de mes recherches m'a mené à la fonction array_keys($array) qui agit comme DESCRIBE mais sur un array. Je fais :
$keys = array_keys($data); print_r($keys)
Ca me donne :
[0] => 0 [1] => nom du champs 1 [2] => 1 [3] => nom du champs 2 [4] => 2 [5] => nom du champs 3
donc pour la fonction complète au cas où quelqu'un d'autre en aie besoin :
function primary($table) { $sql = mysql_query("select * from `$table`"); $data = mysql_fetch_array($sql); $keys = array_keys($data); $prim = $keys[1]; return $prim; }
bah non justement ! puisque $data ( qui est = mysql_fetch_array($sql)) est fait comme ca :
[0] -> valeur
[Nom du champ] -> valeur
[1] -> valeur2
[Nom du champ 2] -> valeur2
de façon à ce qu'on puisse utiliser $data[0] ou $data[nom_du_champ] invariablement.
$keys[0] contient donc "0" (toujours)
le nom du premier champs est dans $keys[1]
[0] -> valeur
[Nom du champ] -> valeur
[1] -> valeur2
[Nom du champ 2] -> valeur2
de façon à ce qu'on puisse utiliser $data[0] ou $data[nom_du_champ] invariablement.
$keys[0] contient donc "0" (toujours)
le nom du premier champs est dans $keys[1]