Problème requête mysqli

Résolu/Fermé
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022 - Modifié le 22 juin 2021 à 01:51
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 23 juin 2021 à 05:45
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

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
22 juin 2021 à 07:14
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 .
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
22 juin 2021 à 07:15
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.
0
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
Modifié le 23 juin 2021 à 00:49
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 />
0
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
Modifié le 23 juin 2021 à 01:31
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
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
23 juin 2021 à 05:45
Pour le script shell.. ce n'est pas ici qu'il faut Poser la question...

Mais bon.. voici de quoi y répondre
https://forums.commentcamarche.net/forum/affich-37619992-bash-les-arguments-parametres
0