Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je viens de monter une application zend de gestion de news. Je rencontre depuis quelques jours un problème au niveau de l'insertion de caractère long dans un champ de type texte. Voici la procédure que j'utilise.
1. Je récupère dans mon controlleur article, le contenu d'un champ news (textarea) à travers $news = addslashes($_POST['news']);
2. je passe ma variable dans ma fonction insertion
$addNews = $model->insertNews($news);
3. Dans mon modèle j'effectue la requête suivante :
public FUNCTION insertNews($news){ $registry = Zend_Registry::getInstance(); $db = $registry->get('db'); $insertSQL = $db->prepare("INSERT INTO articles (news) VALUES('$news')"); $insertSQL->execute(); }
Pour préciser, mon champ news est de type TEXT.
Le souci c'est que lorsque je saisi dans mon textarea un text d'une centaine de caractère. CA MARCHE TRES BIEN. Mon texte s'insère bien dans ma base. Mais dès que je saisi un texte de plus d'une centaine de caractères comme le bloc ci-dessous
Le second paramètre de la méthode factory doit être un tableau associatif décrivant les paramètres de l'adaptateur à utiliser. Cet argument est optionnel, si un objet de type Zend_Config est utilisé en premier paramètre, alors il est supposé contenir les paramètres, et le second paramètre de factoryest alors ignoré.
Le second paramètre de la méthode factory doit être un tableau associatif décrivant les paramètres de l'adaptateur à utiliser. Cet argument est optionnel, si un objet de type Zend_Config est utilisé en premier paramètre, alors il est supposé contenir les paramètres, et le second paramètre de factory est alors ignoré.
Le second paramètre de la méthode factory doit être un tableau associatif décrivant les paramètres de
CA ne MARCHE PLUS.
J'obtiens systématiquement l'erreur suivante :
Voici comment je crée ma connexion dans mon bootstarp index.php
$config = new Zend_Config_Ini('config/config.ini', 'production'); $db = Zend_Db::factory($config->database->adapter,array ( 'host' => $config->database->host, 'username' => $config->database->params->username, 'password' => $config->database->params->password, 'dbname' => $config->database->params->dbname, )); Zend_Db_Table::setDefaultAdapter($db); $registry = Zend_Registry::getInstance(); $registry->set('db', $db); [/b]
Dans mon fichier config.ini j'ai ceci
[b]
database.adapter = PDO_MYSQL
database.params.host = localhost
database.params.username = root
database.params.password =
database.params.dbname = zend
J'utilise wamp pour mes test avec phpmyadmin et mysql 5.1.36.
Dernière modification par yamatoshi (15-07-2010 15:58:25)
Hors ligne
Hello,
Il faut "binder" ta variable $news et pas l'écrire dans ta requête, de mémoire :
$insertSQL = $db->prepare("INSERT INTO articles (news) VALUES('?')"); $insertSQL->execute(array($news));
@+
Hors ligne
Bonjour mikaelkael
Merci pour ta réponse mais cela n'a pas solutionner mon problème. Lorsque je saisi une phrase d'une centaine de caractère ça marche mais dès que je double le nombre de caractère ça plante toujours. Pourtant un insert du même nombre de caractère directement dans phpMyadmin ça marche nickel ???
Je n'y comprend plus rien ?
Dernière modification par yamatoshi (15-07-2010 16:03:25)
Hors ligne
Je me suis loupé c'est :
$insertSQL = $db->prepare("INSERT INTO articles (news) VALUES(?)"); $insertSQL->execute(array($news));
(sans les apostrophes)
Hors ligne
Re Mikael,
Oui j'avais corriger les apostrophes mais cela n'a rien changé. C'est allucinent j'arrive à rien insérer de plus de 200 caractères. C'est très embêtes pour une saisie d'articles de news et le pire c'est que j'ai aucune explication, tout me semble correcte dans mon code !
Hors ligne
Pages: 1