Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'ai besoin d’insérer une collection d'objet en base, et je procède de la façon suivante:
$query = "INSERT INTO {$this->kern}.ministere ("; $query .= " code_fonctionnel_ministere "; $query .= ", libelle_ministere "; $query .= ", millesime "; $query .= ") VALUES "; foreach ($collection as $el) { $query .= " ("; $query .= " '{$el->code_fonctionnel_ministere}'"; $query .= ", '{$el->libelle_ministere}'"; $query .= ", '{$el->millesime}'"; $query .= " ) ,"; } $this->connection->executeQuery($query);
Deux problèmes s’oppose à moi :
- Je dois envoyer ma requête dans une fonction avant de l'executer pour détecter le dernier objet à inserer afin de terminer ma requête par ");" et non "),".
- J'ai besoin d'echapper toutes les valeurs "$el->libelle_ministere", je pourrais faire:
$lib = mysql_real_escape_string($el->libelle_ministere); $query .= ", '{$lib}'";
mais mon projet tourne sur mysql/postgres, je pourrais détecter alors sur quelle plateforme je suis, tel que :
$this->connection->getDatabasePlatform()->getName();
Je pourrais faire un switch sur le résultat.. mais tout ça ne me plait pas, alors j'en viens à vous pour savoir ce que vous me conseillé.
Hors ligne
Hello.
mysql_real_escape_string est totalement déprécié, comme les mysql_query et autres.
Utilises plutôt dans ton cas la librairie PDO, et donc, PDO:quote.
Après ta boucle tu mets simplement :
$query = substr($query,0,-1);
Le plus propre pour ces cas de figure c'est tout de même de travailler avec des implode.
Hors ligne