IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

connexion à MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut connexion à MySQL
    Bonsoir,

    j'ai plusieurs pages qui font une connexion identique à MySQL et tandis que ça se passe bien pour la première, j'ai ce message d'erreur pour les autres :
    error: Lost connection to MySQL server at 'reading initial communication packet', system error: 111 in /homepages/18/d246623212/htdocs/telepamedia/retrouverunami/connect.php on line 37
    La connexion est faite comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include_once("connect.php");
    $id_conn = connect();
    avec connect.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
      <?php
      define("DBNAME","---");
       ini_set('display_errors', 1);
        ini_set('log_errors', 1);
     
     
     
      function error_handler($error_type, $string_error, $file_error, $line_error){
    	  $date = date('d/m/Y - H:i:s');
    	  $return_error = $date.": " ;
    	  switch($error_type){
              case E_USER_ERROR:
                  $return_error .= "Erreur fatale : ".$string_error ;
                  $return_error .= " Dans le fichier : '".$file_error."', à la ligne ".$line_error." \n" ;
              break;
              case E_USER_WARNING:
                  $return_error .= "Avertissement : ".$string_error ;
                  $return_error .= " Dans le fichier : '".$file_error."', à la ligne ".$line_error." \n" ;
                  break ;
              case E_USER_NOTICE:
                  $return_error .= "Note : ".$string_error ;
                  $return_error .= " Dans le fichier : '".$file_error."', à la ligne ".$line_error." \n" ;
              break ;
              default:
                  $return_error .= "Erreur inconnue [".$error_type."] : ".$string_error ;
                  $return_error .= " Dans le fichier : '".$file_error."', à la ligne ".$line_error." \n" ;
              break ;
    	  }
    	error_log($return_error, 3, 'tmp/logs/errors.log');
    	  error_log($return_error, 3, dirname(__FILE__).'/errors.log');
      }
      ini_set('mysql.trace_mode', true);
     
      function connect()
      {
      include_once("config.php");
      ($id_conn=mysql_connect(MYHOST,MYUSER,MYPASS))or trigger_error (mysql_error(), E_USER_ERROR); 
    if (! $id_conn) echo "connexion NOK<br>";
    //if (!mysql_select_db(DBNAME,$id_conn)) echo "connexion base foirée"; else echo"<br>"; 
      mysql_select_db(DBNAME,$id_conn) or trigger_error (mysql_error(), E_USER_ERROR); 
     
     
      return($id_conn);
      }
     
      function free_memory($res)
      {
      @mysql_free_result($res);
      }
     
      function ES($truc)
      {
      $truc=mysql_real_escape_string($truc);
      return $truc;
      }
     
      function close($id_conn)
      {
      mysql_close($id_conn);
      }
     
      ?>
    et config.php ne comporte que la définition de 3 constantes.
    Quelqu'un a-t-il une idée ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    Bonjour
    C'est peut être naïf, mais en faisant un require à la place de ton include_once ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function connect()
      {
      require("config.php");
      ($id_conn=mysql_connect(MYHOST,MYUSER,MYPASS))or trigger_error (mysql_error(), E_USER_ERROR); 
    if (! $id_conn) echo "connexion NOK<br>";
    //if (!mysql_select_db(DBNAME,$id_conn)) echo "connexion base foirée"; else echo"<br>"; 
      mysql_select_db(DBNAME,$id_conn) or trigger_error (mysql_error(), E_USER_ERROR); 
     
     
      return($id_conn);
      }

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci d'avoir tenté, mais ça ne change rien.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Les autres pages, tu les appelle après la première page dans le même script ? Si oui évites de fermer la connexion si tu en as besoin plus loin dans ton script.

    Sinon pourquoi mets-tu un ( devant $id_conn à la ligne 37 ?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pas besion de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    )or trigger_error (mysql_error(), E_USER_ERROR);
    avec le trace_mode

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Les autres pages, tu les appelle après la première page dans le même script ? Si oui évites de fermer la connexion si tu en as besoin plus loin dans ton script.
    Non, c'est chacune des pages différentes, et si je dis la première, c'est qu'elle apparaît en premier dans le menu...
    Sinon pourquoi mets-tu un ( devant $id_conn à la ligne 37 ?
    C'est vrai qu'il sert à rien ; je l'ai enlevé, mais ça ne changeait rien.
    J'ai testé la remarque de Stealth35, mais ça ne change rien. Pour finir, j'ai tout mis sur un autre serveur (et une autre base MySQL) (je suis en train de mettre au point un code, ceci est juste un test, donc peu importe où ça se trouve), et la connexion a marché ! Tant mieux, mais je voudrais quand même comprendre pourquoi ça ne marchait pas avant ; auriez-vous une idée ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as pas mysqli ?

  8. #8
    Membre chevronné Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Points : 2 040
    Points
    2 040
    Par défaut
    Question bête et méchante:
    As tu testé ta connexion avec un autre client Mysql que ton code PHP ?
    Ce type d'erreur peut arriver si ton serveur est distant et que ton accès réseau baggotte. Dans ce cas c'est ta connexion qui est en cause et pas ton code
    Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne.
    Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie.

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    t'as pas mysqli ?
    J'envisageais de passer directement de mysql à PDO, mais comme pour utiliser PDO, il faut faire de la POO, et que je ne connais pas, la première étape sera d'apprendre ça ; par contre, passer à mysqli est-il facile ?

    Dans ce cas c'est ta connexion qui est en cause et pas ton code
    Ce qui est bizarre, c'est que la même connexion (et le même code) marchent sur un autre site...

    As tu testé ta connexion avec un autre client Mysql que ton code PHP ?
    Tu parles de faire une connexion à la même case, mais avec un autre code ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    J'envisageais de passer directement de mysql à PDO, mais comme pour utiliser PDO, il faut faire de la POO, et que je ne connais pas, la première étape sera d'apprendre ça ; par contre, passer à mysqli est-il facile ?
    ?
    oui le passage est tres facile, pour la plut part des fonction il suffit de rajoute le i, mysqli est dispo en procédural et en POO, comme ca quand tu sera a l'aise en POO tu pourras modifié ton code, et ensuite passé a PDO si tu le souhaite

  11. #11
    Membre chevronné Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Points : 2 040
    Points
    2 040
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Ce qui est bizarre, c'est que la même connexion (et le même code) marchent sur un autre site...

    Tu parles de faire une connexion à la même case, mais avec un autre code ?
    Je voulais dire que si ton code PHP lance ce genre d'erreur cela peut venir de ta connexion réseau.

    Si on considère cette hypothèse:
    Tu peux le même code depuis un autre emplacement physique et cela peut fonctionner car tu n'as pas le même chemin réseau.
    Si tu utilises un client Mysql (ex: Navicat, Mysql Query Browser, etc ...) tu devrais avoir la même chose
    Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne.
    Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie.

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Tu peux le même code depuis un autre emplacement physique et cela peut fonctionner car tu n'as pas le même chemin réseau.
    Oui, mais c'est le même compte d'hébergement ; juste un autre répertoire...Donc, à priori le même chemin réseau.

    Si tu utilises un client Mysql
    Ca , je ne connais pas ; c'est bien des lignes de commande ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Concernant mysqli, je t'encourage à utiliser cette extension qui est, avec PDO, celle qui est préconisée par le manuel; mysql n'étant plus qu'en phase de maintenance. Vérifier toutefois auparavant que le serveur reconnaît cette extension, car il subsiste quelques hébergeurs cancres.

    Comme a dit stealth35 la version procédurale de mysqli est quasiment identique à mysql hormis qu'il faut parfois passer l'identifiant de connexion dans quelques fonctions comme par exemple mysqli_real_escape_string et mysqli_query, et donc on fait mysqli_real_escape_string($id_conn,$value), mysqli_query($id_conn,$query). C'est à peu près tout. Avec cette extension tu auras accès aux requêtes préparées, d'autres fonctions optimisées et tu auras un code à jour.

    Pour info, regarde cette page et notamment le tableau en fin de page.

  14. #14
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Je viens de remplacer mysql par mysqli procédural dans mon interface qui permet d'envoyer toute requête SQL et d'en afficher la réponse si elle existe, et j'ai un comportement bizarre et identique à ce que me donnait pdo (dont je ne comprenais pas le code et c'est stealth35 qui me l'avait fait (son code (16/06 17h52)) ; comme requête, je mets la très simple
    show tables
    et la liste que j'obtiens (la même qu'avec pdo), connais pas du tout...et les tables listées existent bien vu que si j'en prends une et que je fais
    desc nom_table
    , j'obtiens bien une description de table (totalement inconnue). Quelqu'un pourrait-il m'expliquer cette bizarrerie ? (Et plus, je peux en crée des nouvelles (CREATE TABLE...) ou deleter les existantes (DROP TABLE...), y compris celles que je ne connais pas)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as phpmyadmin ?

  16. #16
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Oui je l'ai, mais je ne m'en suis jamais servi (avant j'utilisais Wampserver et j'avais avec PHPMyadmin, mais depuis quelques années, ça ne marche plus, et dernièrement, j'ai installé EasyPHP qui me redonne PHPMyadmin, donc je l'ai).
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  17. #17
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    En fait, maintenant, j'ai la même liste de tables avec mysql que avec mysqli ; je ne sais pas d'où viennent ces tables, mais c'est sûrement un problème chez l'hébergeur. Donc, résolu.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    En fait, maintenant, j'ai la même liste de tables avec mysql que avec mysqli ...
    On t'avais bien dit que cela ne pouvait pas être un problème d'extension
    Continues à utiliser mysqli plutôt que mysql puisque ton hébergeur le permet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSP] erreur lors d'une connexion à mySQL
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/08/2004, 16h48
  2. Erreur connexion mysql
    Par bodbod dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/07/2004, 09h28
  3. Connexion mysql
    Par olive.m dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 18/06/2004, 17h44
  4. [Connexion MySQL] Can't connect to MySQL server
    Par mat_dum dans le forum Outils
    Réponses: 12
    Dernier message: 17/07/2003, 07h49
  5. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo