Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je cherche à savoir si avec Zend_Db on peu insérer un fichier SQL avec des table de ce type :
DROP TABLE IF EXISTS `{DBNAME}`.`system_resources` ; CREATE TABLE IF NOT EXISTS `{DBNAME}`.`system_resources` ( `system_resources_id` INT NOT NULL AUTO_INCREMENT , `system_resources_name` VARCHAR(255) NOT NULL , `system_resources_module` VARCHAR(255) NOT NULL , `system_resources_controller` VARCHAR(255) NOT NULL , `system_resources_action` VARCHAR(255) NOT NULL , `system_resources_default` TINYINT NOT NULL DEFAULT 0 , PRIMARY KEY (`system_resources_id`) ) ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci; DROP TABLE IF EXISTS `{DBNAME}`.`System_roles` ; CREATE TABLE IF NOT EXISTS `{DBNAME}`.`System_roles` ( `system_roles_id` INT NOT NULL AUTO_INCREMENT , `system_roles_heritage` INT NOT NULL , `system_roles_name` VARCHAR(45) NOT NULL , `system_roles_su` TINYINT NULL DEFAULT 0 , PRIMARY KEY (`system_roles_id`) ) ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci; ...
Je suis en train de créer une installation, mais je ne trouve pas d'outil proposé par Zend.
Est ce que vous voyez ?
Merci de votre aide,
Bien crodialement.
Dernière modification par nicko (09-04-2010 09:23:46)
Hors ligne
Pour aider un peu plus voici quelques ligne de code qui récupèrent les élément précédent :
// EMPLACEMENT DU FICHIER SQL $sql = file_get_contents(LOCAL_PATH . S . 'Versions' . S . 'Install' . S . 'Db' . S . 'Mysql.sql'); // REMPLACEMENT DE TOUT LES PATERNE PAS LE NOM DE LA BASE DE DONNEES $sql = str_replace('{DBNAME}', $install->namedb, $sql); // CONNEXION A LA BASE DE DONNEES $db = Zend_Db::factory('Mysqli', array('host' => $install->host, 'username' => $install->username, 'password' => $install->password, 'dbname' => $install->namedb)); // ENVOIE DE LA REQUETE $db->query($sql);
pour le moment j'ai une erreur :
Uncaught exception 'Zend_Db_Statement_Mysqli_Exception' with message 'Mysqli prepare error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE IF NOT EXISTS `projectbeta`.`system_resources` ( `system_resourc' at line 3' ...
J'ai un erreur de syntaxe, mais si je le met dans phpmyadmin tout est ok !
Hors ligne
Bonjour,
Bon j'ai fini par trouver, en faite, l'adaptateur Mysqli ne fonctionne pas pour la création des table. Pourquoi ? je ne sais pas !
Du coup j'ai mis Pdo_Mysql.
Bien cordialement.
Hors ligne
heu tu est sur car à ma connaissance PDO_MySQL utilise MySQLi
A+JYT
Hors ligne
Se sont les grands mystère de la programmation. J'ai pensé a la même chose que toi, c'est d'ailleurs pour ca que j'ai mis temps de temps à résoudre le "bug".
Voila les lignes que j'ai écris :
$db = Zend_Db::factory('Pdo_Mysql', array('host' => $install->host, 'username' => $install->username, 'password' => $install->password, 'dbname' => $install->namedb)); if(!$db->query($sql)) { throw new Zend_Db_Exception('error during installation of the database table data'); }
Hors ligne