Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/01/2011, 17h12   #1
Membre régulier
 
Christophe
Inscription : novembre 2009
Messages : 77
Détails du profil
Informations personnelles :
Nom : Christophe

Informations forums :
Inscription : novembre 2009
Messages : 77
Points : 71
Points : 71
Par défaut Requête préparée avec un nom de colonne en paramètre

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 :
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 :
SQLSTATE[42S22]: Column not found: 1054 Champ ''ma_colonne4'' inconnu dans field list

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

Code :
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
chewing-gum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 17h43   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Question courante : tout nom SQL (colonne par exemple) ne peut faire l'objet d'un paramètre.

Citation:
Parameter markers can be used only where data values should appear, not for SQL keywords, identifiers, and so forth.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 17h44   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
essaye avec diffèrent bind avec bindValue
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/01/2011, 23h49   #4
Membre régulier
 
Christophe
Inscription : novembre 2009
Messages : 77
Détails du profil
Informations personnelles :
Nom : Christophe

Informations forums :
Inscription : novembre 2009
Messages : 77
Points : 71
Points : 71
Citation:
Envoyé par julp Voir le message
Question courante : tout nom SQL (colonne par exemple) ne peut faire l'objet d'un paramètre.
Ah d'accord, je comprends mieux ! Merci

Citation:
essaye avec diffèrent bind avec bindValue
Si j'en crois la réponse de julp, ça ne marchera pas, mais je vais tenter ça demain. Merci à toi aussi !
chewing-gum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 10h42   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par chewing-gum Voir le message
Si j'en crois la réponse de julp, ça ne marchera pas, mais je vais tenter ça demain. Merci à toi aussi !
oui ca ne fonctionne pas, même si mysql ne renverrai aucune erreur
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 17h00   #6
Membre régulier
 
Christophe
Inscription : novembre 2009
Messages : 77
Détails du profil
Informations personnelles :
Nom : Christophe

Informations forums :
Inscription : novembre 2009
Messages : 77
Points : 71
Points : 71
Oui je confirme, ça ne fonctionne pas !

Merci pour vos réponses
chewing-gum est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h16.


 
 
 
 
Partenaires

Hébergement Web