8800 sujets

Développement web côté serveur, CMS

Bonjour,


Je voudrais créer une base de donnée en passant par un script PHP et en utilisant PDO,
donc j'ai fait mon code:


$pseudo = 'test';

$req = $bdd -> prepare("CREATE DATABASE IF NOT EXISTS `:pseudo`" );
$req -> execute(array('pseudo' => $pseudo));
$req -> closeCursor();


Sauf que lorsque je vais voir si la base a était créer, elle s'appelle 'test' et non pas test comme je le souhaitais (2 apostrophes sont rajouter).
Je suis presque sur que c'est un problème avec ` dans ma requête et que les ' qui sont rajouter au nom viennent de mon array, mais si j'enlève les ' de 'pseudo' c'est comme si : pseudo n'exister pas et donc ma db n'est pas créer.


Je pourrais très bien faire ceci:


('CREATE DATABASE IF NOT EXISTS `' . $pseudo . '`')


Mais il y a plus de risque d'injection SQL.


Auriez vous svp une solution? Tout en restant sur du PDO.


Merci d'avance,
Modifié par idris (03 Nov 2010 - 04:35)
Salut,

Corrige ton code comme suit :
$pseudo = 'test'; 
 
$req = $bdd -> prepare ("CREATE DATABASE IF NOT EXISTS : pseudo" ); // Sans espace entre les : et le p
$req -> execute (array (':pseudo' => $pseudo)); 
$req -> closeCursor ();

Pour le reste, je t'invite à consulter la page sur les requêtes préparées dans le manuel PHP. Smiley cligne
Modifié par Victor BRITO (03 Nov 2010 - 08:24)
Bonjour,

Merci d'avoir donné une réponse,
j'ai corriger le code, mais cette requête ne crée aucune base de donnée car je pense qu'il manque les 2 `` (je ne sais pas comment s'appelle se signe) qui entoure le nom de la base dans la requête.