Inserer variable php dans"champ" requete insert

Résolu/Fermé
mont_dani Messages postés 229 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 février 2024 - 23 janv. 2023 à 14:50
mont_dani Messages postés 229 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 février 2024 - 27 janv. 2023 à 06:37

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 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024 1 477
23 janv. 2023 à 16:15

bonjour,

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

$campos = array(1 => "pais",  2 => "grupo", 3 => "enlace");
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
23 janv. 2023 à 17:03

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 229 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 février 2024
27 janv. 2023 à 06:37

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