Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 25/11/2011, 20h37   #1
Futur Membre du Club
 
Homme olivier lebaron
Webmaster
Inscription : octobre 2007
Messages : 125
Détails du profil
Informations personnelles :
Nom : Homme olivier lebaron
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : octobre 2007
Messages : 125
Points : 18
Points : 18
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 :
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 :
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 :

Citation:
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 :
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 :
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))
Citation:
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
asus02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 14h01   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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 :
if (mysql_query("CREATE DATABASE $nom_base2" ,$con))
2)
Citation:
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)
Citation:
Code :
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h32.


 
 
 
 
Partenaires

Hébergement Web