Inserer variable php dans"champ" requete insert

Résolu
mont_dani Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   -  
mont_dani Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   -

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

A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

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

$campos = array(1 => "pais",  2 => "grupo", 3 => "enlace");
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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
mont_dani Messages postés 232 Date d'inscription   Statut Membre Dernière intervention  
 

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