Bonjour, je fait appel à votre aide svp, car je bloque sur une fonction que j'essaye de créer.
J'essaye de coder une fonction qui me permettrai d'ajouter un article (dans la page nouvel_article.php) avec une requête INSERT INTO préparée, directement comme ceci par exemple:
1 | Article::insertInto('articles', ['titre','description','contenu_article'], [$titre, $description, $contenu_article]);
|
Voici le code de ma fonction dans ma class :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <? public static function insertInto($table, $champs=[], $values=[]) { $db = self::getPDO(); // pour séparer les différents champs par des virgules $valeurChamps = implode(", ", $champs); // pour incrémenter :drapeaux pour requete préparées $valeurDrapeau = ''; foreach($champs as $d) { $valeurDrapeau .= ' :'.$d.''; } // ********** requete ********** $statement = "INSERT INTO ".$table."(".$valeurChamps.") VALUES(".$valeurDrapeau.")"; $requete = $db->prepare($statement); echo $statement.'<br>'; // ça m'affiche: INSERT INTO articles(titre, description, contenu_article) VALUES(titre :description :contenu_article) // donc jusqu'à la je pense que c'est bon // Boucle pour incrémenter les bindValue avec les valeurs de la requete préparée // Je Pense que c'est ici que ça bloque foreach($champs as $b) { if(is_string($valeurChamps)) { $pdo_param = PDO::PARAM_STR; } else { $pdo_param = PDO::PARAM_INT; } $requete->bindValue(':'.$valeurChamps, $valeurDrapeau, $pdo_param); } echo $valeurChamps.' - '.$valeurDrapeau.'<br>'; // m'affiche: titre, description, contenu_article - :titre :description :contenu_article $result = $requete->execute(); // ********** /requete ********** return $result; // fermer $requete->closeCursor(); } |
Wamp m’écris ceci comme erreur: "Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp\www…"
Merci d'avance
+0
-0