Bonjour à tous,
Alors voilà, j'ai plusieurs fichiers, un qui regroupe tout un tas de fonctions portant le nom d'action en SQL (create table, drop table, etc...)
J'ai un fichier de connexion à la base de données, celui là est ok, lorsque je test en créant des requêtes "en dur" dans une variable $sql et que je continue avec un :
$res = $mysqli->query($sql);
Ca créer bien ma table dans la base.
Mais je ne souhaite pas écrire ma requête en dur !
Je souhaite avoir des fonctions " action sql" d'un côté, et un tableau avec des arguments de l'autre côté.
Des exemples seront plus parlant :
Fichier de fonction :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| abstract class DBMigration
{
abstract protected function up();
abstract protected function down();
// $my : connection MySQL (déjà ouverte)
// $log : fichier de log (déjà ouvert)
public function __construct($mysqli, $log) {
$this->mysqli = $mysqli;
$this->log = $log;
}
// Création d'une table avec la liste des colonnes et leur type
public function create_table($tablename, $columns) {
require_once("migrations/test.php");
$migration = new CreateTableCountries($mysqli, $log);
$res = $mysqli->query($sql);
$migration->up();
} |
Puis mon fichier test.php contenant ce que je veux ajouter dans ma table :
1 2 3 4 5 6 7 8 9
| class CreateTableCountries extends DBMigration {
public function up() {
// Création de la table countries
$this->create_table('countries', array(
'id' => 'integer(11)',
'name' => 'varchar(255)',
));
} |
En gros la fonction up() servira pour tout ce qui est create table, tandis que j'aurais également une fonction down() pour tout ce qui est drop tables.
Pour résumer :
2 fichiers, un comprenant les fonctions create table, drop table, etc...
L'autre pour tout ce qui est fonction up et créations des tables.
Maintenant ma question est : Que dois-je mettre dans mon premier fichier dans les fonctions create table par exemple pour que ça créer effectivement la table que je défini dans mon fichier test.php ? Je rappelle que je ne souhaite pas écrire la requête en dur.
Ce que j'ai fait actuellement ne retourne pas d'erreur mais ne me créer pas ma table pour autant.
Je suis un débutant complet en php, soyez indulgents svp :p
Merci d'avance !
Janesh
Partager