Insertion avec array associatif

tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   -  
tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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();
      }
     
    }
    

    0
  2. tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   2 060
     
    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!
    0