Générer automatiquement un fichier SQL de création de table
BOnjour!
Dans le cadre d'un stage, je souhaite générer un fichier SQL de structure de table (CREATE TABLE....(id int(11) auto_increment...)
Voici mon code Php pour y parvenir :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| $recupStructure = "DESC ".$this->getNomTable()."";
$recupStructureSql = mysql_query($recupStructure) or die('Invalid query');
$nombreColsRecupStructure = mysql_num_fields($recupStructureSql);
while($struc = mysql_fetch_array($recupStructureSql)){
/**************************
* Gestion des clés *
*************************/
if(strlen($struc['Key'])>0){
if($struc['Key']=="MUL"){
$keys[] = $struc['Field'];
}
if($struc['Key']==="PRI"){
$primary_key = $struc['Field'];
}
}
/****************************
* Gestion du champ null *
***************************/
if(strlen($struc['Null'])>0){
$null = "NULL";
}
else{
$null = "NOT NULL";
}
/******************************
* Gestion du champ default *
*****************************/
if($struc['Default']!="NULL"){
if(strlen($struc['Default'])>0){
$default = " default '".$struc['Default']."'";
}/*si la lgr >0*/
else{
if($primary_key==$struc['Field']){
/*s'il s agit d une clé primaire on ne fait rien*/
}
else{
$default = " default ''";
}
}
}
/**********************************
* Gestion du champ extra *
*********************************/
if(isset($struc['Extra'])){
$extra = $struc['Extra'];
}
/****************************************
* On concatene l'ensemble des valeurs *
***************************************/
$result.="<br>".$struc['Field']." ".$struc['Type']." ".$null." ".$extra.$default.",";
/** A ce stade on a parcouru l ensemble des types et des champs**/
}/*while*/
/******************************
* Gestion des clés
*****************************/
/** clé primaire **/
$result.="<br>PRIMARY KEY(".$primary_key."),";
/** autres clés **/
for($cnt=0;$cnt<sizeof($keys);$cnt++){
$result.="<br> KEY ".$keys[$cnt]." (".$keys[$cnt]."),";
}
/** On a une virgule en trop en derniere lettre **/
$result=substr($result, 0, -1);
return $result; |
Il s'avère que ce code ne genere pas précisément ce que phpmyadmin génére quand on exporte une table...
Existe t il une méthode pour avoir plus d'informations sur une table que DESC ou SHOW COLUMNS (d'ailleurs DESC est un alias de Show columns...) sur les différentes clés?
quelqu'un saurait il comment faire? ou s'il existe une fonction spécialement pour générer un fichier SQL à partir d'une structure de table préexistante?
Merci d'avance !!!
Cordialement,
Shacamus