Insertion avec array associatif [Fermé]

Signaler
Messages postés
3525
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
23 février 2021
-
Messages postés
3525
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
23 février 2021
-
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é?

2 réponses

Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 385
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();
  }
 
}

Messages postés
3525
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
23 février 2021
1 844
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!