[RESOLU] Erreur : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

Eléphanteau du PHP | 28 Messages

27 avr. 2022, 09:15

Bonjour,
J'ai une erreur quand je relis ma BDD ( hébergé sur mon site perso) au formulaire codé en PHP sur un site WordPress relié à une api SOAP ( hébergé par mon prestataire)
J'avais effectué ce test sur un formulaire sur mon hébergement perso et l'enregistrement des données se faisait bien :-(
Est ce le faite que la BDD sois hébergée ailleurs que le site ? ou y'a t'il vraiment une erreur dans mon site en dehors des sécurité PHP que je n'ai pas encore mise pour le formulaire ( sauf que grâce à cette api, le formulaire se remplis directement mise à part la commande et les commentaires et aucune modification possible mise à part l'adresse de livraison )
Je suis débutante en PHP

Code : Tout sélectionner

<?php /* Template Name: ifce */ ?> <?php get_header(); ?> <div class="row pb_3per page"> <div class="small-12 large-8 columns"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if (have_posts()) { while (have_posts()): the_post(); ?> <?php get_template_part('template-parts/content', 'page'); ?> <?php include get_template_directory().'/custom-part-content-supp.php' ?> <div> <fieldset class="fieldset"> <legend>Commande de kits génomique</legend> <!-- mise en place de la Bdd ( essai sur hébergement perso pour sauvegarde des données)--> <?php $servname = "gabriellre665.mysql.db"; $dbname = ""; $user = ""; $pass = ""; $identifiant = $_POST['identitficateur']; $nom = $_POST['nom']; $prenom = $_POST['prenom']; $adresse = $_POST['street']; $ville = $_POST['city']; $cp = $_POST['postal']; $complementAdresse = $_POST['street2']; $mail = $_POST['email']; $fixe=$_POST['tel']; $portable=$_POST['phone']; $kit=$_POST['number-kits']; $tube=$_POST['number-tubes']; $aiguille=$_POST['number-aiguilles']; $adaptateur=$_POST['number-adaptateur']; $cartonSmall=$_POST['number-small']; $cartonBig=$_POST['number-big']; $etiquetteChronopost=$_POST['number-chronospost']; $enveloppeBulle =$_POST['number-enveloppe']; $commentaire=$_POST['message']; try{ //on se connecte à la base de données $dbco = new PDO("mysql:host={$servname};dbname={$dbname}", $user, $pass); $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //$sth appartient à la classe PDOStatement $sth = $dbco->prepare(" INSERT INTO exemple(identifiant,nom,prenom,adresse,ville,codePostal,complementAdresse,mail,fixe,portable,kit,tube,aiguille,adaptateur,cartonSmall,cartonBig,etiquetteChronopost,enveloppeBulle,commentaire) VALUES (:identifiant,:nom, :prenom, :adresse, :ville, :cp, :complement, :mail,:fixe,:portable,:kit,:tube,:aiguille,:adaptateur,:cartonSmall,:cartonBig,:etiquetteChronopost,:enveloppeBulle,:commentaire) "); //La constante de type par défaut est STR $sth->bindValue(':identifiant', $identifiant); $sth->bindValue(':nom', $nom,PDO::PARAM_STR); $sth->bindValue(':prenom', $prenom,PDO::PARAM_STR); $sth->bindValue(':adresse', $adresse,PDO::PARAM_STR); $sth->bindValue(':ville', $ville,PDO::PARAM_STR); $sth->bindValue(':cp', $cp, PDO::PARAM_INT); $sth->bindValue(':complement', $complementAdresse,PDO::PARAM_STR); $sth->bindValue(':mail', $mail,PDO::PARAM_STR); $sth->bindValue(':fixe', $fixe); $sth->bindValue(':portable', $portable); $sth->bindValue(':kit', $kit,PDO::PARAM_INT); $sth->bindValue(':tube', $tube,PDO::PARAM_INT); $sth->bindValue(':aiguille', $aiguille,PDO::PARAM_INT); $sth->bindValue(':adaptateur', $adaptateur,PDO::PARAM_INT); $sth->bindValue(':cartonSmall', $cartonSmall,PDO::PARAM_INT); $sth->bindValue(':cartonBig', $cartonBig,PDO::PARAM_INT); $sth->bindValue(':etiquetteChronopost', $etiquetteChronopost,PDO::PARAM_INT); $sth->bindValue(':enveloppeBulle', $enveloppeBulle,PDO::PARAM_INT); $sth->bindValue(':commentaire', $commentaire,PDO::PARAM_STR); $sth->execute(); echo "Entrée ajoutée dans la table"; } catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } ?> <form method="post" action="" enctype="multipart/form-data" class="ifce"> <div class="ifce"> <div class="small-12 large-12 columns ifce-first"> <div class="small-12 large-6 columns"> <label for="identity-number">N° Identificateur</label> <input type="text" class="sg-input" id="identitficateur" name="identitficateur" required/> <div class="invalid-feedback"> Numéro inconnu </div> <div class="valid-feedback"> Numéro reconnu </div> </div> <div class="small-12 large-6 columns"> <label for="email">Email</label> <input readonly type="email" disabled="disabled" id="email" name="email" required/> </div> </div> <div class="small-6 large-6 columns"> <label for="nom">Nom</label> <input readonly type="text" disabled="disabled" id="nom" name="nom" required> </div> <div class="small-6 large-6 columns"> <label for="prenom">Prénom</label> <input readonly type="text" disabled="disabled" id="prenom" name="prenom" required> </div> <fieldset class="fieldset"> <legend>Adresse de livraison</legend> <div class="small-12 large-12 columns"> <label for="street">Adresse</label> <input type="text" disabled="disabled" id="street" name="street" required/> </div> <div class="small-12 large-12 columns"> <label for="street2">Complement adresse </label> <input type="text" disabled="disabled" id="street2" name="street2" /> </div> <div class="small-4 large-4 columns"> <label for="postal">Code Postal</label> <input type="text"disabled="disabled" id="postal" name="postal"maxlength="5" pattern="[0-9]{5}" title="5 chiffres" required/> </div> <div class="small-8 large-8 columns"> <label for="city">Ville</label> <input type="text"disabled="disabled" id="city" name="city" required/> </div> </fieldset> <div class="small-6 large-6 columns"> <label for="phone">Teléphone Portable</label> <input readonly type="text" disabled="disabled" id="phone" name="phone" /> </div> <div class="small-6 large-6 columns"> <label for="tel">Téléphone Fixe</label> <input readonly type="text" disabled="disabled" id="tel" name="tel" /> </div> <div class="small-12 large-12 columns"> <label for="kit">Kits </label><em>1 kit contient 1 sachet étanche,1 planche de 5 étiquettes,1 buvard</em> <!-- <input type="number" disabled="disabled" class="form-control" id="kit" name="kit" required/> --> <select class="sg-input either-required" name="number-kits" id="number-kits" disabled="disabled"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="20">20</option> <option value="50">50</option> <option value="100">100</option> <option value="150">150</option> <option value="200">200</option> </select> <div class="invalid-feedback"> Un de ces champs doit être rempli. </div> </div> <div class="small-4 large-4 columns"> <label for="tubes">Tubes</label> <!-- <input type="number" disabled="disabled" class="form-control" id="aiguilles" name="aiguilles" required/> --> <select class="sg-input either-required" name="number-tubes" id="number-tubes" disabled="disabled" > <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="20">20</option> <option value="50">50</option> <option value="100">100</option> <option value="150">150</option> <option value="200">200</option> </select> <div class="invalid-feedback"> Un de ces champs doit être rempli. </div> </div> <div class="small-4 large-4 columns"> <label for="aiguilles"> Aiguilles</label> <!-- <input type="number" disabled="disabled" class="form-control" id="aiguilles" name="aiguilles" required/> --> <select class="sg-input either-required" name="number-aiguilles" id="number-aiguilles" disabled="disabled" > <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="20">20</option> <option value="50">50</option> <option value="100">100</option> <option value="150">150</option> <option value="200">200</option> </select> <div class="invalid-feedback"> Un de ces champs doit être rempli. </div> </div> <div class="small-4 large-4 columns"> <label for="adaptateur">Adaptateur</label> <!-- <input type="number"disabled="disabled" class="form-control" id="adaptateur" name="adaptateur" required/> --> <select class="sg-input either-required" name="number-adaptateur" id="number-adaptateur" disabled="disabled" > <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <div class="invalid-feedback"> Un de ces champs doit être rempli. </div> </div> <div class="small-12 large-2 columns"> <label for="small-box">Petit carton </label> <!-- <input type="number" disabled="disabled" class="form-control" id="small-box" name="small-box" required/> --> <select class="sg-input either-required" name="number-small" id="number-small" disabled="disabled"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <div class="invalid-feedback"> Un de ces champs doit être rempli. </div> </div> <div class="small-12 large-3 columns"> <label for="big-box">Grand carton </label> <!-- <input type="number" disabled="disabled" class="form-control" id="big-box" name="big-box"required/> --> <select class="sg-input either-required" name="number-big" id="number-big" disabled="disabled"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <div class="invalid-feedback"> Un de ces champs doit être rempli. </div> </div> <div class="small-12 large-4 columns"> <label for="number-box">Etiquette Chronopost retour</label> <!-- <input type="number" disabled="disabled" class="form-control" id="small-box" name="small-box" required/> --> <select class="sg-input either-required" name="number-chronospost" id="number-chronospost" disabled="disabled"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <div class="invalid-feedback"> Un de ces champs doit être rempli. </div> </div> <div class="small-12 large-3 columns"> <label for="enveloppe-box">Enveloppe à bulles </label> <!-- <input type="number" disabled="disabled" class="form-control" id="small-box" name="small-box" required/> --> <select class="sg-input either-required" name="number-enveloppe" id="number-enveloppe" disabled="disabled"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </select> <div class="invalid-feedback"> Un de ces champs doit être rempli. </div> </div> <div class="small-12 large-12 columns"> <label for="file">Pièce(s) jointe(s)</label> <input type="file" name="files[]" disabled="disabled" multiple accept=".pdf"> </div> <div class="small-12 large-12 columns"> <label >Vos commentaires</label> <textarea disabled="disabled" id="message" rows="3" name="message" ></textarea> </div> <div class="small-12 large-12 columns"style="display:flex"> <div class="small-1 large-1 columns"> <input type="checkbox" id="rgpd" name="rgpd" required/> </div> <div class="small-12 large-12 columns"> <label for="rgpd"class="rgpd small-10 large-10 columns"> En cochant cette case, j’accepte <a href="https://www.laboratoire-labeo.fr/fr/politique-de-confidentialite/">la Politique de confidentialité </a>de ce site </label> </div> <br><br> </div> <br> <div class="small-12 large-3 columns float-right" > <input class="small-3 large-7 columns float-right submit" type="submit" disabled="disabled" name="valider" id="valider" value="Valider" /> </div> <br><br><br> </div> </form> </div> </fieldset> <?php endwhile; ?> <?php } ?> </main> </div> </div> <div class="small-12 large-4 column my_main_sidebar"> <?php include get_template_directory() . '/template-parts/main-sidebar.php' ?> </div> </div> <script> if (window.history.replaceState){ window.history.replaceState(null,null,window.location.href); } </script> <?php get_footer(); ?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 avr. 2022, 13:02

Ce message d'erreur indique que PHP n'arrive pas à se connecter à ta BDD à distance, à priori car il ne trouve pas le serveur SQL que tu as indiqué.

Vérifie avec l'hébergeur de ta bdd si elle est bien accessible depuis une connexion distante (la configuration par défaut c'est souvent bloqué) et demande lui ce que tu dois indiquer comme adresse (IP ou domaine) que tu mettras dans ta variable {$servname}

Vérifie aussi avec l'hébergeur qui héberge ton script PHP qu'il autorise bien les connexions SQL sortante (port 3306) car même si c'est plus rare, ça peut aussi être bloqué à ce niveau.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

27 avr. 2022, 14:10

J'ai vérifié avec mon hébergeur, effectivement je ne peux pas utilisé ma BDD à l'extérieur car je suis sur un mutualisé pour une question de sécurité