Erreur de connexion à la BDD incluse à l'offre "Hébergement Web Perso"

Erreur de connexion à la BDD incluse à l'offre "Hébergement Web Perso"
----------
Bonjour,

J'ai acheté l'offre "Hébergement web PERSO". J'utilise donc PHP pour faire un site dynamique et je voudrais me connecter à la BDD qui est incluse dans mon forfait sauf que j'ai beau faire comme dans la doc d'ovh : https://help.ovhcloud.com/csm/en-public-cloud-databases-mysql-connect-php?id=kb_article_view&sysparm_article=KB0049191

Cela ne fonctionne pas.

Pourriez-vous m'éclairecir ? Voici mon code :

```
try {
$host = "bouXXXXXXXXXXX.mysql.db"; // trouvé dans hébergement/monsite.fr/Bases de données : Adresse du serveur
$user = "bouXXXXXXXXXXX"; // trouvé dans hébergement/monsite.fr/Bases de données : Nom d'utilisateur
$passwd = "***************************"; // Celui que j'utilise pour me connecter à PhpMyAdmin
$db = "bouXXXXXXXXXXX"; // trouvé dans hébergement/monsite.fr/Bases de données : Nom de la base

$this->db = mysqli_init();
# Le seul changement que j'ai fait à cette fonction c'est le paramètre du port (le premier NULL) que j'ai enlevé étant donné qu'il ne m'est donné nulle part.
$link = mysqli_real_connect($this->db, $host, $user, $password, $dbname, NULL, NULL, MYSQLI_CLIENT_SSL);
$res = $this->db->query("SELECT Password FROM Users WHERE ID = 'XXXX';");
var_dump($res); // output : NULL
# J'utilise foreach mais le résultat est le même avec le fetch_all de la doc.
foreach ($res as $r){
var_dump($r); // output : NULL
$hashed_password = $r['Password'];
}
var_dump($hashed_password); // output : NULL
$this->db->close();
}
catch (Throwable $e) {
echo "Captured Throwable for connection : " . $e->getMessage() . PHP_EOL;
}
```

Si nous pouvons trouver une solution ensemble, vous me rendriez un grand service.

Cordialement,
Rémi.

Bonjour,


Cela ne fonctionne pas.


C'est a dire ? page blanche ? code erreur ?
Pour voir les message d'erreur (si la page est blanche), a la section 1.5 :
https://help.ovhcloud.com/csm/fr-web-hosting-change-php-version?id=kb_article_view&sysparm_article=KB0053013 https://help.ovhcloud.com/csm/fr-web-hosting-change-php-version?id=kb_article_view&sysparm_article=KB0053013


Cela ne fonctionne pas.

Bonjour,

Tout semble correct.
Il y a un message d'erreur ?

$passwd = "***************************"; //


cette variable n'est pas un problème pour vous ? car elle n'est pas appelée mais par contre vous faite appel à $password qui n'est pas déclarée :

$link = mysqli_real_connect($this->db, $host, $user, **$password**, $dbname, NULL, NULL, MYSQLI_CLIENT_SSL);


...

cette variable n'est pas un problème pour vous ?


Mais c'est très bien vu, ça ! Félicitations oeil de lynx !

Pareil pour les variables $db et $dbname…ah le copier/coller..


Félicitations oeil de lynx !


Je prend ca pour un compliment, tu pourra m'appeler ainsi dorénavant ;)

$db et $dbname

(passons donc au pluriel)
yeux de lynx !

Premièrement merci à vous 2.

Malheuresement le code que j'ai mis dans le sujet était quelque chose que j'avais écris dans un txt pour l'envoyer au support, je ne pensais pas avoir fais d'aussi grossses erreurs dedans. Voici donc le VRAI code de ma classe pour gerer les connexions à la base de donnée :

```

public function connect_db($host, $user, $passwd, $dbname){
/* Ancienne méthode
$this->db = mysqli_connect($host, $user, $passwd, $db);
if ($this->db->connect_errno) {
exit();
}
/
# méthode de la doc
try {
$this->db = mysqli_init();
$link = mysqli_real_connect($this->db, $host, $user, $password, $dbname, NULL, NULL, MYSQLI_CLIENT_SSL);
$res = $this->db->query("SELECT Password FROM users WHERE Pseudo = 'tartempion';");
var_dump($res);
foreach ($res as $r){
var_dump($r);
$hashed_password = $r['Password'];
}
var_dump($hashed_password);
$this->db->close();
}
catch (Throwable $e) {
echo "Captured Throwable for connection : " . $e->getMessage() . PHP_EOL;
}
}

```

L'objectif de la fonction est simplement de créer la connexion à la base de données, je fais ensuite les requetes avec d'autres fonctions mais pour trouver le problème, je fais un test directement dans celle-ci.

Voilà donc comment je m'en sers par la suite :

```
include "login_password.php";

$host = "bouXXXXXXXXXXX.mysql.db"; // trouvé dans hébergement/monsite.fr/Bases de données : Adresse du serveur
$user = "bouXXXXXXXXXXX"; // trouvé dans hébergement/monsite.fr/Bases de données : Nom d'utilisateur
$passwd = "
**************************"; // Celui que j'utilise pour me connecter à PhpMyAdmin
$db = "bouXXXXXXXXXXX"; // trouvé dans hébergement/monsite.fr/Bases de données : Nom de la base


$lp = new login_password();
$lp->connect_db($host, $user, $passwd, $db);
$is_known = $lp->check_password($_POST['pseudo'], $_POST['passwd']);
echo $is_known.'
';
echo "Redirection en cours…";
if($is_known == 1){
$user_infos = $lp->get_infos_on_user($_POST['pseudo']);

foreach ($user_infos as $u){
$_SESSION['id'] = $u['ID'];
$_SESSION['pseudo'] = $u['Pseudo'];
}
header('Refresh: 1; URL=../');
exit();
}else{
$_SESSION['errormsg'] = 'Erreur : Pseudo ou mot de passe incorrect, veuillez réessayer.';
header('Refresh: 10; URL=./');
}
```

Cette fois-ci, tout y est :wink:

Correction, cela fonctionne ! En effet, dans ma fonction j'ai en paramètre la mauvaise variable pour le MDP.

Un grand merci à tout les deux et merci aussi pour la configuration du fichier .ovhconfig :wink:

Bonne fin de soirée,
Rémi