Bonjour j'essaie de faire une requête dynamique INSERT avec passage de paramètres.

Voici mon code
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
 
$params = [];
$query = "INSERT INTO ".$this->table." (";
               foreach ($data as $key => $value) {
                      $query .= "".strtolower($key).", ";
               }
               $query = substr($query, 0, -2); // suppression de la dernière ","
               $query .= ") VALUES (";
               foreach ($data as $key => $value) {
                   $query .= ":".strtolower($key).", ";
                   $params[":".strtolower($key)]= $value;
               }
                  $query = substr($query, 0, -2); // suppression de la dernière ","
                  $query .= ")";
 
                $statement = $this->Instance()->prepare($query);
                $statement->execute($params);
Normalement execute accepte un tableau en paramètre. https://www.php.net/manual/fr/pdostatement.execute.php

La connexion à la db et le nom de la table sont bons.
Si j'exécute le query en complétant manuellement le tableau cela fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$statement->execute(array(':lastname'=>'Dupond', ':firstname'=>'Alphonse'));
Quelqu'un a-t-il une explication?
Merci