IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requête create database


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Points : 51
    Points
    51
    Par défaut Requête create database
    bonjour,

    j'ai une requete create database qui fonctionne mais si j'indique une variable a la place du nom ca me colle une erreur.

    ma requete :

    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
     
    $con = mysql_connect("localhost","root","passe root");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
     
    if (mysql_query("CREATE DATABASE '".$nom_base2."' ",$con))
      {
      echo "Database created";
      }
    else
      {
      echo "Error creating database: " . mysql_error();
      }
     
    mysql_close($con);
    si je place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (mysql_query("CREATE DATABASE  ma_base ",$con))
    il me crée bien une base nommée ma_base mais le but etant
    de créer une base comportant le nom retenue dans la variable $nom_base2

    l'erreur :

    Error creating database: 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 ''bd-kn-NGY4C2FR'' at line 1
    merci

    -------------------

    bon j'ai reussi en supprimant les ' et en placant ` autour de la variable.

    maintenant je souhaite ajouter l'user et le password qui va bie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?
    if ("CREATE USER '$nick_handle'@'%' IDENTIFIED BY '$password2';
         GRANT USAGE ON * . * TO '$nick_handle'@'%' IDENTIFIED BY '$password2' ;
         CREATE DATABASE IF NOT EXISTS `$nom_base2` ;
         GRANT ALL PRIVILEGES ON `$nom_base2` . * TO '$nick_handle'@'%';"
         mysql_query($con));
    ?>
    mais je doit avoir une erreur car ca ne passe pas.
    merci



    -----------------------

    alors j'ai ajouté localhost et la j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (mysql_query("CREATE USER '$nick_handle'@'localhost' IDENTIFIED BY '$password2';
                     GRANT USAGE ON * . * TO '$nick_handle'@'localhost' IDENTIFIED BY '$password2' ;
                     CREATE DATABASE IF NOT EXISTS `$nom_base2` ;
                     GRANT ALL PRIVILEGES ON `$nom_base2` . * TO '$nick_handle'@'localhost';",$con))
    Error creating database: 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 'GRANT USAGE ON * . * TO 'yRgOyuvO'@'localhost' IDENTIFIED BY 'd41d8cd98f00b204e9' at line 2

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    1)
    Si le nom de la BDD ne comporte pas d'espaces et n'est pas un mot du langage SQL, ce qui semble être le cas d'après ton exemple, inutile de mettre les apostrophes inversées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (mysql_query("CREATE DATABASE $nom_base2" ,$con))
    2)
    GRANT USAGE ON * . * TO 'yRgOyuvO'@'localhost' IDENTIFIED BY 'd41d8cd98f00b204e9'
    Je ne voudrais pas être à la place de celui qui aura à se souvenir de ce mot de passe ! Ne l'aurais tu pas déjà crypté avant de le passer à la requête ? Du coup MySQL va crypter le mot de passe crypté et l'utilisateur ne pourra jamais travailler avec la BDD.

    3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (mysql_query("CREATE USER '$nick_handle'@'localhost' IDENTIFIED BY '$password2';
                     GRANT USAGE ON * . * TO '$nick_handle'@'localhost' IDENTIFIED BY '$password2' ;
                     CREATE DATABASE IF NOT EXISTS `$nom_base2` ;
                     GRANT ALL PRIVILEGES ON `$nom_base2` . * TO '$nick_handle'@'localhost';",$con))
    Pourquoi crées-tu d'abord l'utilisateur alors que la requête GRANT USAGE IDENTIFIED le fait tout seul ?

    4)
    En PHP, les requêtes doivent être passées une à une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql_query ("GRANT USAGE ON * . * TO '$nick_handle'@'%' IDENTIFIED BY '$password2'");
    mysql_query("CREATE DATABASE IF NOT EXISTS $nom_base2");
    mysql_query("GRANT ALL PRIVILEGES ON $nom_base2 . * TO '$nick_handle'@'%'");
    5)
    Il est plutôt inhabituel d'avoir à créer des BDD pour chaque utilisateur, surtout en donnant les droits d'usage sur toutes les BDD du serveur !
    Tu es un hébergeur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/04/2008, 15h38
  2. Réponses: 4
    Dernier message: 25/10/2005, 20h42
  3. Create Database
    Par Soulama dans le forum Access
    Réponses: 4
    Dernier message: 22/10/2005, 22h25
  4. Réponses: 8
    Dernier message: 04/10/2005, 19h27
  5. CREATE DATABASE
    Par willowII dans le forum Débuter
    Réponses: 1
    Dernier message: 13/01/2005, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo