Inserer variable php dans"champ" requete insert

Résolu
mont_dani Messages postés 249 Statut Membre -  
mont_dani Messages postés 249 Statut Membre -

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 24281 Statut Contributeur 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 40050 Statut Modérateur 4 756
 

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 249 Statut Membre
 

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