Bonjour,

J'essaye d'exécuter une requête préparée avec un nom de colonne que je passe en paramètre, mais malheureusement, je n'y arrive pas.
Le nom de ma colonne est considéré comme une chaïne de caractères.
Mon code sera plus parlant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
// On récupère le numéro de la colonne, et on le concatène avec une chaine de caractères :
$colonne = 'ma_colonne' . $_GET['Numero'];
 
// Autres paramètres de la requête
$donnees = 'Un peu de texte';
$id_ligne = 70;
 
// Requête
$query = $bdd->prepare("UPDATE MA_TABLE
	    SET `:ma_colonne` = :donnees
	    WHERE id_ligne = :id_ligne");
 
// Exécution
$query->execute(array(
     ':colonne' => $colonne,
     ':donnees' => $donnees,
     ':id_ligne' => $id_ligne
));
Et j'ai donc le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SQLSTATE[42S22]: Column not found: 1054 Champ ''ma_colonne4'' inconnu dans field list

Par contre, la méthode 'barbare' fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$query = "UPDATE MA_TABLE
	    SET $colonne = '$donnees'
	    WHERE id_ligne = $id_ligne";
 
$bdd->query($query);
Quelqu'un aurait une explication ? Merci