Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
880 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Create database avec PDO

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Create database avec PDO

n°2033621
B4RL1V3
Posté le 02-11-2010 à 15:44:46  profilanswer
 

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:

 

Code : PHP - Sélectionner
 

Code :
  1. <?php
  2. $pseudo = 'test';
  3. $req = $bdd -> prepare("CREATE DATABASE IF NOT EXISTS `:pseudo`" );
  4. $req -> execute(array('pseudo' => $pseudo));
  5. $req -> closeCursor();
  6. ?>
 

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.
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:

 

Code : PHP - Sélectionner

 
Code :
  1. <?php
  2. ('CREATE DATABASE IF NOT EXISTS `' . $pseudo . '`')
  3. ?>
 

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

 

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

 

Merci d'avance,

Message cité 1 fois
Message édité par B4RL1V3 le 02-11-2010 à 16:57:41
mood
Publicité
Posté le 02-11-2010 à 15:44:46  profilanswer
 

n°2033645
dwogsi
Défaillance cérébrale...
Posté le 02-11-2010 à 16:45:26  profilanswer
 

A moins que tu sois en train de réaliser un outils permettant de gérer des bases de données, et deux ou trois autres cas très particuliers, je ne vois pas pourquoi tu aurais besoin de créer une table. Et le fait que son nom soit déterminé par une variable 'pseudo' est d'autant plus inquiétant. C'est pour faire quoi exactement ? Il doit probablement exister une meilleur solution à ton problème.
 
Sinon pour répondre à ta question, tu observes un comportement parfaitement normal.


Message édité par dwogsi le 02-11-2010 à 16:46:50

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°2033646
B4RL1V3
Posté le 02-11-2010 à 16:49:33  profilanswer
 

C'est pour créer une base de donnée au utilisateurs qui souhaite en obtenir une tout simplement pour leur site.
On ma parler de faire une requête simple (avec query) et de la protéger avec quote() puis de retirer le 1er et dernier caractère qui serait donc 2 apostrophes ( ' et ' ) en utilisant substr() mais je ne vois pas comment mettre ce code en place.

 

Je sais, une requête préparée place des apostrophes pour protéger la requête des injections mais si je veux créer une db je ne sais pas comment faire vu que je doit mettre 2 ` autour du nom et la requête préparée ajoute 2 apostrophes autour du nom si je fais une requête en fonction d'un variable.
Contrairement à se que je souhaite vu que je ne veux pas que ma db s'appelle 'test' mais test (sans les apostrophes).

 

Merci,


Message édité par B4RL1V3 le 02-11-2010 à 16:59:50
n°2033689
B4RL1V3
Posté le 02-11-2010 à 21:03:42  profilanswer
 

Vous avez une solution svp?

n°2034448
CyberDenix
Posté le 06-11-2010 à 23:53:13  profilanswer
 

Essaye la version avec avec ?, qui permet de remplacer une valeur.
 
J'ai toujours utilisé ? et non :mavariable, et j'ai jamais eu ce problème.

n°2034492
B4RL1V3
Posté le 07-11-2010 à 14:51:02  profilanswer
 

C'est pareille mais c'est bon j'ai trouver la solution.
Merci quand même,

n°2034567
skeye
Posté le 08-11-2010 à 07:54:52  profilanswer
 

B4RL1V3 a écrit :


 

Code :
  1. <?php
  2. $req = $bdd -> prepare("CREATE DATABASE IF NOT EXISTS `:pseudo`" );
  3. ?>



 

Tu échappes deux fois le nom de ta table, là : une fois à la main en écrivant les `, et une fois via ta variable.
Essaye ça :

 
Code :
  1. $req = $bdd -> prepare("CREATE DATABASE IF NOT EXISTS :pseudo" );


Message édité par skeye le 08-11-2010 à 07:55:15

---------------
Can't buy what I want because it's free -
n°2034645
B4RL1V3
Posté le 08-11-2010 à 12:49:15  profilanswer
 

je sais sauf que ça ne marche pas mais j'ai trouver merci quand même.

n°2260927
benbigben
Posté le 23-06-2015 à 11:03:33  profilanswer
 

Salut,
Désolé du up, mais je me pose la même question que B4RL1V3.
Apparemment il avait trouvé une solution mais il ne l'a pas publié :(
Queulqu'un peut m'aider?
Merci!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Create database avec PDO

 

Sujets relatifs
Problème requête PDOProblème LIMIT avec requête préparée PDO
probleme pour cacher les erreurs de connexion à databasePDO Requêtes préparées
[Symfony 1.4] database.yml et generation du schema.yml : pgsqlCréer une database
[PDO/SQL] Aide selection et classement (JOIN ??)Ordre des champs lors du "create"
[DB2] extraction de database reste vide sur DB V7Renseignements pour programmation database sur sharepoint
Plus de sujets relatifs à : Create database avec PDO


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR