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