Hébergements Web - Accès à une base MySQL en php
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Frage

Accès à une base MySQL en php

Von
Jean-LoupC
Erstellungsdatum 2016-11-28 09:15:36 (edited on 2024-09-04 13:03:41) in Hébergements Web

Bonjour à tous ;
J'ai développé un "sous-site" sur mon site hébergé ailleurs que chez OVH.
Ce "sous-site" fonctionnait très bien et je l'ai mis chez OVH. Et là, les instructions php concernant la base de données ne fonctionnent plus. Rien ne s'affiche. Voici la liste des instructions en cause :
$host="kjuncomgeqjloup.mysql.db";
$user="kjuncomgeqjloup";
$mdp="..."; (mot-de-passe)
$base="kjuncomgeqjloup";
//@mysql_connect($host,$user,$mdp) or die("Connexion au serveur impossible");
//@mysql_select_db($base) or die("Base de données non accessible : ".mysql_error());
$Requete='SELECT * FROM Offres WHERE PseudoFB = "'.$Pseudo.'"';
//$Resultat=mysql_query($Requete) or die("Impossible de trouver l'offre : ".mysql_error());
//$Enr=mysql_fetch_array($Resultat);
//mysql_close();

J'ai mis en commentaires certaines lignes et la suite fonctionne correctement.
Si j'enlève le // de la ligne suivant $base..., plus rien ne se passe.
Les variables de connexion et le mot de passe fonctionnent avec phpmyadmin (je fais des copier-coller)", mais pas sur le site www.3kjun.com/inscription des donneurs,...,Créer votre annonce.

Si quelqu'un pouvait m'éclairer, j'apprécierais beaucoup.
Merci d'avance.
Jean-Loup


21 Antworten ( Latest reply on 2024-09-04 14:25:39 Von
janus57
)

Bonjour,

vous utilisez quel version de PHP car les fonctions mysql_ sont déprécié et supprimé en PHP7 de mémoire.

Cordialement, janus57

Ah ? Ben, justement, c'est php7... Quelles fonctions utilisent-on dans ces cas-là ?

Bonjour,

je vous invite à lire la doc PHP : http://php.net/manual/fr/function.mysql-connect.php
Exemple de fonction nouvelle : http://php.net/manual/fr/function.mysqli-connect.php

Cordialement, janus57


Ah ? Ben, justement, c'est php7... Quelles fonctions utilisent-on dans ces cas-là ?


Je te propose de tester ce script : https://www.wordetweb.com/word-et-web/OVH-Tester-une-base-de-donnees-via-un-script-PDO-FR.htm OVH - Test de Base de Données via un script en langage PDO

mysp


Ah ? Ben, justement, c'est php7... Quelles fonctions utilisent-on dans ces cas-là ?


mysqli par exemple


mysqli par exemple

Quitte à modifier, autant passer à PDO.

Oui, effectivement, j'ai vu une doc dans laquelle ils disaient que PBO sera sans doute beaucoup plus utilisé que MySQLi.
Merci à vous 3. Je vais regarder ça.
Gaston_Phone, je suis déjà allé à cette page que tu m'indiques. Ca m'a eu l'air un peu "touffu"...
Je vais creuser et reviendrai ici pour vous tenir au courant.
Merci encore.

Bonjour,

en soit ça change rien c'est une API comme une autre, de plus mysqli_ est le plus proche de mysql_ niveau syntaxe ce qui peut être utile.

Cordialement, janus57

C'est juste... Je vais peut-être prendre cette solution, en fait.
Merci.

Ca a bougé ; mais voici le résultat que j'obtiens :

Connexion au serveur impossible : 2002 php_network_getaddresses: getaddrinfo failed: Name or service not known
De quel service parle-t-il ?


Gaston_Phone, je suis déjà allé à cette page que tu m'indiques. Ca m'a eu l'air un peu "touffu"...

A mon humble avis, c'est toute la difficulté d'utilisation du mode PDO pour un NON expert.

Je partage cet avis !...

Bonjour,

vous utilisez quoi comme code maintenant ?

Cordialement, janus57

Voici :

$host="kjuncomgeqjloup.mysql.db";
$user="kjuncomgeqjloup";
$mdp="...";
$base="kjuncomgeqjloup";

$connexion=mysqli_connect($host,$user,$mdp,$base);

if (!$connexion)
{
die('Connexion au serveur impossible : '.mysqli_connect_errno().' ; '.mysqli_connect_error());
}

echo 'Succès... ' . mysqli_get_host_info($connexion) . "\n";

$Requete='SELECT * FROM Offres WHERE PseudoFB = "'.$Pseudo.'"';

mysqli_close($connexion);

J'ai pris l'option procédurale.


vous utilisez quoi comme code maintenant ?

J'ai passé :
* Entièrement un de mes sites en mode PDO.
* Partiellement l'autre site qui ne contient que des outils de gestion pour moi. Certaines fonctions ne sont plus donc opérationnelles. :(

Oui, mais comme le disait janus57, mysqli_ est censé fonctionner. On peut donc éviter PBO.

Bonjour,

déjà c'est PDO (avec un d/D pas un B).

Ensuite vous êtes bien sur l'enviropnneùment stable (Cf : https://docs.ovh.com/fr/fr/web/hosting/modifier-lenvironnement-dexecution-de-mon-hebergement-web/#comment-modifier-l-environnement-d-execution) ?

Enfin normalement si tout est bon cela doit fonctionner

Cordialement, janus57


Quitte à modifier, autant passer à PBO.

PBO ???


PBO ???


$pdo = new PDO($DBconnect, $DBowner, $DBpw);

Autant pour moi. C'est P D O avec un **_D_**

PDO... Pardon...
Le problème est que lorsque j'essaye de modifier l'environnement, ma page devient blanchâtre (tout y est visible, mais comme dans un brouillard) et rien ne se passe, même au bout de plusieurs minutes. Quand je reclique sur la page, elle réapparaît normalement.

Bonjour,

si vous ne pouvez pas modifier par le manager vous pouvez le faire directement via le .ovhconfig.

Sinon j'ai pas compris la question.
En tout cas il est préférable d'être en environnement stable.

Cordialement, janus57

OK. Merci, Janus57.

Bonjour ;
Après m'être débattu avec OVH, voici le code que j'utilise :
$host="kjuncomgeqjloup.mysql.db";
$user="kjuncomgeqjloup";
$mdp="...";
$base="kjuncomgeqjloup";

$connexion=mysqli_connect($host,$user,$mdp,$base);
if (!$connexion)
{
die('Connexion au serveur impossible : '.mysqli_connect_errno().' ; '.mysqli_connect_error());
}

$Requete='SELECT * FROM Offres WHERE PseudoFB = "'.$Pseudo.'"';

$Resultat=$connexion->query($Requete) or die("Impossible de trouver l'offre : ".mysql_error());
$Enr=mysqli_fetch_array($Resultat);
mysqli_close($connexion);

Et voici ce que me retourne l'option debuggage :
Warning: mysqli::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/kjuncomgeq/www/valid_creation.php on line 46

Warning: mysqli::__construct(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/kjuncomgeq/www/valid_creation.php on line 46

Si une bonne âme pouvait m'aider, ça ne serait pas de refus. Cela fait un moment que je ne m'en sors pas.
Jean-Loup


Si une bonne âme pouvait m'aider, ça ne serait pas de refus. Cela fait un moment que je ne m'en sors pas.

Essaie avec ce script --> https://wordetweb.com/word-et-web/OVH-Tester-une-base-de-donnees-avec-un-script-mysqli-FR.htm OVH - Test de Base de Données via un script mysqli

Bonjour, Gaston_Phone ;
Merci pour ta réponse.
J'avoue que ce script me semble bien compliqué ; j'aurais aimé savoir ce qui ne va pas dans mon code qui est tout simple.

Gaston_Phone,
Je viens de faire le test et j'ai le même problème :
Opérations sur une Base de Données MySQL via les commandes mysqli

Version de PHP : 7.0.22

Travaux dans la base 'kjuncomgeqjloup' sur le serveur 'kjuncomgeqjloup.mysql.db '

Warning: mysqli::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/kjuncomgeq/www/TestDB.php on line 69

Warning: mysqli::__construct(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/kjuncomgeq/www/TestDB.php on line 69

Connexion à MySQL - Erreur=(2002)php_network_getaddresses: getaddrinfo failed: Name or service not known

Connexion à MySQL - Erreur=(2002)php_network_getaddresses: getaddrinfo failed: Name or service not known

Et d'autres erreurs dues, sans doute à ce problème de connexion.

Accèdes-tu à ta base de données avec Phpmyadmin ?

Oui, sans problème.

Dans le message, il y a, entre autre, "/home/". Est-ce normal ?

Vloià ce que tu devrais avoir :



" /home/kjuncomgeq/www/" est le chemin complet de ton script "TestDB.php".
Donc rien d'anormal.

Ta base est-elle une base privée ?

Ca y est, Gaston_Phone !
Il y avait un caractère invisible juste avant "; dans le nom de l'host... OVH a fini par me l'indiquer.
Merci pour le temps que tu m'as consacré.
Jean-Loup

De préférence travaille avec Notepad.exe. :)

Oui, c'et ce que m'a suggéré OVH aussi. Ceci étant, c'est eux qui m'ont envoyé le nom de l'host ; je n'ai fait que des copier-coller...
Merci encore !

Bonjour,

si vous voulez un éditeur qui vous indique ce genre de chose regardé du côté de notepad++ qui en plus fait de la coloration syntaxique (ce qui est très utile).

Note : généralement le copier/coller c'est mauvais si on utilise pas un éditeur un peu avancé.

Cordialement, janus57

Tu as du copier un caractère de présentation (Gras, italique). :)

Bonjour Janu57 ;
Merci. Ca y est, je l'ai téléchargé...
Cordialement.
Jean-Loup

Oui, Gaston_Phone, c'est bien possible...

Bonjour Gaston,

Pouvez vous me communiquer la solution, le bon code pour une connection PDO à la BDD d'Ovh.

J'ai tous essayé, tous les tutos, tous les solutions trouvés sur ce forum, et ailleurs.

Je me demande si PDO est encore accepté chez OVH .

J'ai fais le teste , voici le résultat :
Version de PHP : 7.2.1

$DBconnect = 'mysql:dbname=;host=mysql5-6.perso'

Etablissement de la connexion SQL en mode PDO

Connexion échouée : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

Durée du traitement = 0.01 secondes

Merci d'avance,

La semaine prochaine, je serais dans votre région à Roubaix, j'aimerais vous rencontrer pour vous remercier.

Cordialement,

@Hais, quelles valeurs avez-vous mises pour :

> // ****** Configuration - Debut ******
> $DBhost = "mysql5-6.perso"; // Par exemple
> $DBowner = ""; // ton login SQL
> $DBName = $DBowner;
> $DBPort = "";
> // ****** Configuration - Fin ******