1 pièce(s) jointe(s)
Script générateur de Classe SQL -> PHP
Bonjour,
Alors voilà, je suis étudiant travaillant principalement mon SQL via SSMS (SQL Serveur Management Studio 2017 - Microsoft). Je dispose d'un script PHP qu'on a développé entre collègue pour me générer automatiquement mes classes métiers en PHP depuis ma BDD sous SSMS.
Voici le script :
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
| <?php
$user = "xxxxx";
$pwd = "xxxxx";
$pdo = new PDO('mysql:dbname=stagiaire;host=xxx.xxx.xxx.xxx;port=xxxxx', $user, $pwd);
$q = $pdo->query("sp_help");
//$q = $pdo->query("Select table_name from information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = 'xxxxx'"); // Test ne fonctionnant pas, trop de paramètres à retyper pour rien.
$tables = $q->fetchAll(PDO::FETCH_ASSOC);
$extends='Modele';
foreach($tables as $v){
if($v['Object_type'] == 'table'|| $v['Object_type'] == 'view' && $v['Owner'] == 'db'){//
$class = $v['Name'];
$s = "";
$sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_Name='".$class."'";
$q2 = $pdo->query($sql);
$fields = array_reverse($q2->fetchAll(PDO::FETCH_ASSOC));
$s .= "<?php\nclass ".ucfirst($class)." extends ".$extends." implements IProprietes{\n\tprotected ";//////////////////////debut class
foreach($fields as $v){$s .= "$".$v['COLUMN_NAME'].", ";}
$s = rtrim($s);
$s = rtrim($s, ",");
$s .= ";\n\n";
$s .= "\tpublic function __construct(";
foreach($fields as $v){$s .= "$".$v['COLUMN_NAME']."= null, ";}
$s = rtrim($s);
$s = rtrim($s, ",");
$s .= "){\n";///////////////////////////////////////////////////////////////////////////accolade construct
$s .= "\t\t";
$s .= "if(!(";
foreach($fields as $v)
{
$s .= "$".$v['COLUMN_NAME']." == null && ";
}
//enlever && et espace...............;
$s = rtrim($s);
$s = rtrim($s, "&&");
$s .= ") )";
$s .= "\n\t\t{";///////////////////////////////////////accolade if
foreach($fields as $v)
{
$s .= "\n\t\t\t"."$"."this->".$v['COLUMN_NAME']." = "."$".$v['COLUMN_NAME'].";";
}
$s .= "\n\t\t}";///////////////////////////////////////fin if
$s .= "\n\t}";////////////////////////////////////////////////////////////////////////////////////////fin construct
$s .= "
public function getProprietes(){
return get_object_vars($"."this);
}
}";////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fin class
}
if(file_put_contents('./'.$class.'.class.php', $s)){
echo nl2br($s);
}
} |
Ce dernier fonctionne donc très bien sous SSMS.
Le problème, étant actuellement en stage en société, je travaille sous SQL WorkBench 6.3.5 x64(et non pas SSMS 2017) du coup, mon script ne fonctionne pas (logique me diriez-vous), lorsque je tente d’exécuter ce dernier, voici l'erreur obtenue :
Pièce jointe 341584
Je suis donc remonté sur l'erreur et en effet utiliser "sp_help" ne fonctionne que sous SSMS et ses variantes, du coup, j'espérer pouvoir trouver une solution alternative cette ps intégrée à SSMS.
Que cela soit sous forme de requête, ou autre, je suis preneur #help :aie:
Merci d'avance!