Insertion avec array associatif

Fermé
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 - 7 nov. 2016 à 11:37
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 - 7 nov. 2016 à 13:37
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é?

A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 nov. 2016 à 12:11
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
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 2 031
7 nov. 2016 à 13:37
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