Salut à tous,
j'utilise dans un projet Zend_Db_Adapter_Abstract. Lorsque je souhaite utiliser la méthode update j'ai constamment une chaine vide à la place d'une valeur null :
Comme on peux le voir je convertis les valeurs nullde $bind en Zend_Db_Expr afin d'avoir effectivement une valeur null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public function update($bind,$where) { if(is_object($bind)) $bind = $this->toArray (); $bind = $this->replaceNull($bind); $nbRow = $this->sql->update($this->table,$bind, $where); if($nbRow == 0) { throw new Exception('Impossible de mettre à jour les données'); } return true; } private function replaceNull($datas) { foreach($datas as &$data) { if($data == NULL) { $data = new Zend_Db_Expr('NULL'); } } return $datas; }
Quand je dump $bind juste avant l'update j'ai bien tout ce qu'il faut :
Mais lors de l'update rien n'y fait je me retrouve avec une chaine vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 array( 'email' => object(Zend_Db_Expr>) protected '_expression' => string 'NULL' 'is_admin' => int1
Si jamais ça peux venir de l) voici comme j'initialise mon objet :
Et la table concerné par l'update :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $options = $configIni->database->params->toArray() + array('driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;', PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); $sql = Zend_Db::factory($configIni->database->adapter, $options); $sql->getConnection();
Si jamais vous avez une idée ... là je sèche complètement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_account` int(10) unsigned NOT NULL, `email` varchar(45) NOT NULL, `pass` varchar(70) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email_UNIQUE` (`email`), KEY `fk_user_accounts_idx` (`id_account`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;![]()
Partager