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