Problème requête mysqli [Résolu]

Signaler
Messages postés
120
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
6 juillet 2021
-
Messages postés
33122
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 juillet 2021
-
Bonjour,

Toutes mes autres requêtes de ma page fonctionne, pourquoi pas celle-ci svp ?

Sachant que le nom de ma base de donnée est le même que l'username.

Merci d'avance.

<?php
//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
require('config.php');
$username="supraSupra";
$password="test";
$query = "CREATE USER $username@'%' IDENTIFIED BY $password;
GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY $password;
CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci;
GRANT ALL PRIVILEGES ON $username . * TO $username@'%';"
$res = mysqli_query($conn, $query);
?>



Configuration: Windows / Chrome 91.0.4472.114

3 réponses

Messages postés
33122
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 juillet 2021
3 632
Bonjour
Fais un echo de ta variable $query puis serts toi de ce qui va s'afficher pour tester la requête directement dans ta bdd via phpmyadmin afin de t'assurer que la requête fonctionne .
Messages postés
33122
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 juillet 2021
3 632
D'ailleurs.. tu n'as pas une mais trois requetes... Pas sûr que tu puisses les lancer en une seule fois..
Il faudra certainement exécuter trois requetes distinctes dans le php.
Messages postés
120
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
6 juillet 2021

Voilà j'ai adapté en passant par 4 requètes et en mettant en echo query1 query2 query3 et query4
Cela me donne ça en affichage :

CREATE USER supraSupra@'%' IDENTIFIED BY test

GRANT USAGE ON * . * TO supraSupra@'%' IDENTIFIED BY test

CREATE DATABASE IF NOT EXISTS supraSupra DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci

GRANT ALL PRIVILEGES ON supraSupra . * TO supraSupra@'%'

Cela créer bien la table, mais pas l'utilisateur.

Merci d'avance de ton aide.

Voici le code adapté :

<?php
//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
require('config.php');
$username="supraSupra";
$password="test";
$query1 = "CREATE USER $username@'%' IDENTIFIED BY $password";
$res1 = mysqli_query($conn, $query1);
$query2 = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY $password";
$res2 = mysqli_query($conn, $query2);
$query3 = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci";
$res3 = mysqli_query($conn, $query3);
$query4 = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'";
$res4 = mysqli_query($conn, $query4);
?>
<?php echo $query1; ?><br />
<?php echo $query2; ?><br />
<?php echo $query3; ?><br />
<?php echo $query4; ?><br />
Messages postés
120
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
6 juillet 2021

J'ai réussi, merci.

Il manquait juste les ' ' autour des variables des mots de passes et cela devait être passé requête par requête.

Pour les personnes intérressées, voici le code complet, parcontre je sais pas si on peut faire plus propre, j'ai bien entendu donné des exemples de username, password et nom de domaine pour des raisons de sécurité.

Et je n'arrive pas à passer mes variables dans mon shell (voir code plus bas).

Code page Php :

<?php
//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
require('config.php');

$username="supraSupra";
$password="test";

$path = "/var/www/".$username;
if (!is_dir($path)) {
    mkdir($path, 0777, true);
}
$vhost = $username.".conf";
$query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'";
$res_mysql_user = mysqli_query($conn, $query_mysql_user);
$query_mysql_grant = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'";
$res_mysql_grant = mysqli_query($conn, $query_mysql_grant);
$query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci";
$res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db);
$query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'";
$res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege);
$query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')";
$res_ftp = mysqli_query($conn, $query_ftp);
  file_put_contents("/etc/apache2/sites-available/".$vhost, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>");
  $output = exec("./heb.sh $vhost");
?>


Code Shell de heb.sh : (se trouvant dans le même dossier)

#!/bin/bash

sudo a2ensite $vhost
sudo service apache2 reload


Avez-vous des idées pour améliorer le code, passer les variables dans mon shell et le rendre plus propre svp ?

Merci d'avance
Messages postés
33122
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 juillet 2021
3 632
Pour le script shell.. ce n'est pas ici qu'il faut Poser la question...

Mais bon.. voici de quoi y répondre
https://www.commentcamarche.net/faq/5444-bash-les-arguments-parametres