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 :
Et j'ai donc le message d'erreur suivant :
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 ));
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 :
Quelqu'un aurait une explication ? Merci
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);![]()
Partager