Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2011, 23h47   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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 :
Citation:
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 :
1
2
include_once("connect.php");
$id_conn = connect();
avec connect.php :
Code :
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 ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 23h55   #2
Candidat au titre de Membre du Club
 
Homme Philippe
Développeur Web
Inscription : mars 2009
Messages : 19
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France

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

Informations forums :
Inscription : mars 2009
Messages : 19
Points : 14
Points : 14
Bonjour
C'est peut être naïf, mais en faisant un require à la place de ton include_once ?
Code :
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);
  }
marochlo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 00h03   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Merci d'avoir tenté, mais ça ne change rien.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 03h12   #4
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
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 ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 10h07   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pas besion de faire :

Code :
)or trigger_error (mysql_error(), E_USER_ERROR);
avec le trace_mode
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 10h58   #6
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
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...
Citation:
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 ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 11h03   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
t'as pas mysqli ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 11h35   #8
Membre Expert
 
Avatar de zeyr2mejetrem
 
Homme
Ingénieur développement logiciels
Inscription : novembre 2010
Messages : 401
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : novembre 2010
Messages : 401
Points : 1 641
Points : 1 641
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.
zeyr2mejetrem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 12h46   #9
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
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 ?

Citation:
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...

Citation:
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 ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 13h20   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 14h33   #11
Membre Expert
 
Avatar de zeyr2mejetrem
 
Homme
Ingénieur développement logiciels
Inscription : novembre 2010
Messages : 401
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : novembre 2010
Messages : 401
Points : 1 641
Points : 1 641
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.
zeyr2mejetrem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 14h48   #12
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
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.

Citation:
Si tu utilises un client Mysql
Ca , je ne connais pas ; c'est bien des lignes de commande ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 16h51   #13
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
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.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h29   #14
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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
Citation:
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
Citation:
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)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h36   #15
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
t'as phpmyadmin ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h46   #16
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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).
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 09h06   #17
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 13h48   #18
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
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éalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h03.


 
 
 
 
Partenaires

Hébergement Web