Insertion avec array associatif

Bonjour, après des recherches sur le web, je n'ai pas trouvé la réponse à ma question. J'ai créé un formulaire qui me retourne, en $_POST, un array associatif avec [clé]=>valeur où clé correspond au nom du champ de ma base de donnée.

J'ai un truc du genre
array=([champ1]=>valeur1, [champ2]=>valeur2)
et ma base mysql se présente ainsi :

_______________
id|champ1|champ2|


Est-ce que c'est possible d'insérer les valeurs avec une requête préparée en "disant" à php que mes noms de champs sont en clé?

--
Les forumeurs ne sont pas des devins, en tout cas, moi non!

2 réponses

  1. Bonjour, merci pour l'exemple de code. Je pensais qu'il existais un méthode plus rapide que de tout décomposer mais j'ai peut-être cru au Père Noël!
    1. Modérateur
      Bonjour,

      A la limite.. tu peux construire la requête comme ceci :
      //récupération PROPRE des variables
      //$tonArray = !empty($_POST['tonarray']) ? $_POST['tonarray'] : NULL;
      
      //pour les tests :
      $tonArray = array('champ1'=>'valeur1', 'champ2'=>'valeur2');
      
      $strFields = "";
      $strKeys = "";
      
      $arrFields = array();
      $arrkeys = array();
      $arrDatas = array();
      
      if($tonArray){
       foreach($tonArray as $K=>$V){
         $arrFields[] = $K;
         $arrkeys[] = ':'.$K;
         $arrDatas[':'.$K]=>$V;
       }    
        
       $strFields = join(',',$arrFields);
       $strKeys = join(',',$arrkeys);
       
       $sql = "INSERT INTO tatable ($strFields) VALUES($strKeys);"  
       
        try {
          $prep = $bdd->prepare($sql);
          $prep->execute($arrDatas);
        }catch(Exception $e){
          echo "Erreur ! ".$e->getMessage();
        }
       
      }