Inserer variable php dans"champ" requete insert

Résolu

Bonjour

J'ai besoin dune fonction que j'utiliderai dans differernt endroit de ma web pour inserer les donnees dans ma db.

function insererdonnees($sql_texto)
		{
			 //variable pour la table 
             $tabla = "grupo"; //renvoi la valeur
			
             //variable pour les champs ==> produit un erreur
            $campo_1 ="pais";
			$campo_2 ="grupo";
			$campo_3 ="enlace";
			
            //variable pour les valeurs des champs
			$var_1 ="gb";//renvoi la valeur
			$var_2 ="new";
			$var_3 ="lien vers la page";
			
			//variable pour les valeurs des champs binparam
            $value_1 ="pais";//renvoi la valeur
			$value_2 ="grupo";
			$value_3 = "enlace";

			//concatener les variable en texte
			$conc ='$value_pais ="pais";
			$value_grupo ="grupo";
			$value_enlace = "enlace";';
			
            //Calcul nb $
			$nb_var = substr_count($conc, "$");
			$nb_var_1 = $nb_var-1;
			$qu_var = str_repeat("?,", $nb_var_1);
			$qu_var_ok = $qu_var."?"; // renvoi le nombre de ? necessaire suivant le nombre de champ
			
			//preparer la variable des champs de la table
			$lista_campo = array(); 
			for ($i=1; $i<=$nb_var; $i++) {
				$lista_campo[] = "\$campo_".$i.",";
				}
			$campo_lista = implode("", $lista_campo);
			$champ=substr($campo_lista,0,-1);
			echo $champ; // donne $campo_1,$campo_2,$campo_3
			
					$insert_nuevo="insert into $tabla($champ) values($qu_var_ok)";
					$insert_nuevo = $sql_texto->prepare($insert_nuevo);
						
					$insert_nuevo->bindParam(':$value_1',$var_1,PDO::PARAM_STR, 25);
					$insert_nuevo->bindParam(':$value_2',$var_2,PDO::PARAM_STR, 25);
					$insert_nuevo->bindParam(':$value_3',$var_3,PDO::PARAM_STR,25);
					
					$insert_nuevo->execute([$var_1,$var_2,$var_3]);
					$insert_nuevo->closeCursor();
					
					//header('Location: ad_page_inicio.php');		
			
		}

Le probleme est que lorsque je met une variable a la place des noms des champs de la table, j'ai une erreur 

SQLSTATE[42S22]: Column not found: 1054

Comment puis-je resoudre mon probleme?

merci pour votre aide

3 réponses

  1. Contributeur

    bonjour,

    as-tu envisagé de faire plutôt ainsi?

    $campos = array(1 => "pais",  2 => "grupo", 3 => "enlace");
    0
    1. Modérateur

      Bonjour,

      Déjà, il faudrait que tu comprennes la différence entre l'utilisation des simples quotes et des doubles quotes.

      En gros .. teste ces lignes de code et regarde le résultat :

      $qui = "Dada";
      
      echo "<br>Bonjour $qui ";
      
      echo '<br>Bonjour $qui';

      0
      1. Problème résolu avec cette solution:

                    $nuevo ="";
        			$champ_nuevo =array();
        			foreach ($campo as $valeur) {
        			
        			$nuevo .= $valeur.", ";
        			}
        			$champ_neuf=substr($nuevo,0,-2);

        Merci pour me mettre sur la bonne voie

        0