PDO : Use ?;

codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 30 oct. 2008 à 23:13
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 31 oct. 2008 à 18:30
Bonjour à tous !
Voila j'aimerai effectuer une requête sur mon serveur mysql pour lui indiquer quelle base de donnée utiliser, donc pour ce faire je fait cette requete :

$oPdo->prepare ('USE ?;')->execute (array ($sDbName));


A noter que je ne peux pas le mettre dans le dsn lors de la connexion et que je ne peux pas forcément faire confiance à la valeur donnée (donc la mettre directement dans la requête) :p

Sauf que quand j'effectue cette requête, j'ai une erreur qui est retournée :

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''mydb'' at line 1

Comment faire ?

Merci de votre aide ! :)

http://www.ReFlectiv.Net

6 réponses

cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
31 oct. 2008 à 14:23
Il me semble que pour encapsuler une entité sous mysql on utilise le ALT GR+è (soit le `) et non le ' ?

aKheNAtHoN
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
31 oct. 2008 à 14:35
Oui, mais normallement PDO s'occupe de l'encapsulation dans la méthode execute, en fonction du type donné.
Donc je n'ai pas à le mettre moi même.

C'est ca qui pose problème ! :p

http://www.ReFlectiv.Net
0
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
31 oct. 2008 à 14:40
J'en sais rien, essayes d'executer un USE `mydb` dans l'interpreteur de requettes et USE 'mydb'.

Pour moi la seconde commande dit UTILISE une CHAINE, et la première UTILISE une ENTITE.

Du coup, essayes $oPdo->execute('USE `'.$sDbName.'`;');

aKheNAtHoN
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
31 oct. 2008 à 15:08
J'avais essayé les trois auparavant (sans quotes), et ca marche.
Le truc c'est que ne veux pas mettre directement ma variable $sDbName, car elle provient d'un _GET, jte laisse imaginer la suite ;)

http://www.ReFlectiv.Net
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
31 oct. 2008 à 15:21
Great Mr CodeTrue - quand vous avez trouvé la réponse, merci de valider - je crois que c'est la règle sur le forum

aKheNAtHoN
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
31 oct. 2008 à 18:30
Euh, j'ai pas encore trouvé hein :p

http://www.ReFlectiv.Net
0
Rejoignez-nous