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 :

PDO probleme de connection. [PDO]


Sujet :

PHP & Base de donn�es

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par d�faut PDO probleme de connection.
    Bonjour,
    Je suis actuellement face a un probl�me de taille puisque cela fait plus de trois jours que je ne trouver pas de solution, m�me apr�s avoir consulter google...

    Explications:
    Je suis en train de cr�er un site web avec php/mysql. Et n'ayant pas acc�s directement aux serveurs apache et mysql, je me suis installer sur mon PC un WAMPSERVER histoire de d�velopper tranquille et ensuite tous transf�rer sur le serveur d�dier UNIX (RedHat).

    J'utilise PDO pour la connexion a mysql.

    Mon WAMPSERVER est a jour, (trop peut �tre...):
    -APACHE 2.2.17
    -PHP 5.3.4
    -MySql 5.1.53

    Tous marche a la perfection sur ce serveur.

    Puis est venu le temps de basculer sur le redhat pour test et mise en ligne...

    Probl�me:
    J�obtiens ici un des probl�me les plus �trange auquel j'ai jamais �t� confronte:
    toutes les pages se connectant via PDO a mysql foire et reste blanche sans rien afficher (m�me avec des echo ni m�me du HTML) j�obtiens de mani�re compl�tement al�atoire certaines erreurs venant de PDO.

    version sur le serveur:
    -Mysql 5.0.77
    -PHP 5.1.6
    -Apache 2.2.3

    bien que les version soit diff�rente PDO est installer avec les drivers.
    Petit code que j'ai trouver sur le site:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    foreach(get_loaded_extensions() as $extension)
    {
       if(strpos(strtolower($extension), 'pdo') !== FALSE)
        {
           echo $extension.'<br/>';
        }
    }
     
    //Affiche
     
    PDO
    pdo_mysql
    pdo_sqlite

    En voila un exemple:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    Warning: PDO::prepare() [function.PDO-prepare]: SQLSTATE[HY000]: General error: constructor arguments must be passed as an array in /www3/OOV/oov/actu/postActu_PDO.php on line 36
     
    Warning: PDO::prepare() [function.PDO-prepare]: SQLSTATE[HY000]: General error: failed to instantiate user-supplied statement class in /www3/OOV/oov/actu/postActu_PDO.php on line 36
     
    Fatal error: Call to a member function execute() on a non-object in /www3/OOV/oov/actu/postActu_PDO.php on line 83
    code de la ligne correspondante (mais ca ne vien pas de la je crois donc):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $res = $mysqlcnx->query("SELECT * FROM actualites ORDER BY Priority");
    code de la connexion:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try
    		{
    			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    			$pdo_options[PDO::ATTR_PERSISTENT] = false;
    			$mysqlcnx = new PDO("mysql:host=localhost;dbname=newsoov", '$login', '$mdp', $pdo_options);
    		}
    		catch (Exception $e)
    		{
    			die("An error occured: " . $e->getMessage());
    		}
    Je me tue a essayer de trouver une solution, j'ai aussi jeter un �il au log sql:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    110722 16:50:57 [Warning] Aborted connection 2 to db: 'dbName' user: 
    'userName' host: 'localhost' (Got an error reading communication packets)
    qui aparait a chaque tentative de connection... doc internet pas tres bavard la dessus (je meme tester ce que Mysql preconnise dans ce genre de cas...)

    J'ai aussi fait des tests sur le retour de la fonction PDO et il me retourne un objet PDO, vide...:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    			var_dump($mysqlcnx);
    			print_r($mysqlcnx);
     
    			if ($mysqlcnx == NULL)
    			{
    				ECHO "NULL";
    			}
    			else
    			{
    				ECHO "PAS NULL";
    			}
    affiche:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    object(PDO)#1 (0) { } PDO Object ( ) NULL
    Help please, je suis dans le caca!

    P.S.: le serveur RedHat est en loopback, le 'localhost', c'est normal.

  2. #2
    Expert confirm�

    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
    Par d�faut
    t'as mis setFetchMode ?

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par d�faut
    L'objet pdo est vide, comment je pourrai appeler cette m�thode?

    les erreurs que j'ai mise ici sont sur le query, mais si je met un $db->prepare(...)
    ou une autre methode ca me sort les meme erreurs.

  4. #4
    Expert confirm�

    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
    Par d�faut
    Citation Envoy� par Vodsky Voir le message
    L'objet pdo est vide, comment je pourrai appeler cette m�thode?
    l'objet PDO est toujours vide, il ne contient aucune propri�t� ...

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par d�faut
    je met quoi comme valeur?

  6. #6
    Expert confirm�

    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
    Par d�faut
    Citation Envoy� par Vodsky Voir le message
    je met quoi comme valeur?
    la question �tait plut�t si t'en a mis un ou pas, montre tout ton code

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par d�faut
    Non je n'ai pas mis de setFetchMode.

    Voici le code:
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <?php
    	session_start();
    ?>
    <?//xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
      	<meta http-equiv="Pragma" content="no-cache" />
    	<link rel="stylesheet" type="text/css" href="css/actu.css" />
    	<title>Actualites</title>
      </head>
     
      <body>
    <?php	
    	if (isset($_SESSION['from']) && $_SESSION['from'] == "writeActu.php")
    	{
    		/*
    			Connexion aux bases mysqlcnx via l'extension PDO de PHP
    		*/
    		try
    		{
    			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    			$pdo_options[PDO::ATTR_PERSISTENT] = false;
    			$mysqlcnx = new PDO("mysql:host=localhost;dbname=newsoov", 'user', 'mdp', $pdo_options);
    		}
    		catch (Exception $e)
    		{
    			die("An error occured: " . $e->getMessage());
    		}
     
    		/*
    			Prepare la requete sql
    		*/
    		$query = $mysqlcnx->prepare("INSERT INTO actualites VALUES('', ?, ?, ?, ?, ?)");
     
    		if (isset($_POST['title']))
    		{
    			$queryRep[0] = htmlspecialchars($_POST['title']);
    		}
     
    		if (isset($_POST['url']))
    		{
    			$queryRep[1] = htmlspecialchars($_POST['url']);
    		}
     
    		if (isset($_POST['desc']))
    		{
    			$queryRep[2] = htmlspecialchars($_POST['desc']);
    		}
     
    		if (isset($_POST['priority']))
    		{
    			$queryRep[3] = htmlspecialchars($_POST['priority']);
    		}
     
    		if (isset($_POST['atTop']))
    		{
    			$queryRep[4] = htmlspecialchars($_POST['atTop']);
    		}
     
    		for ($j = 0; $j < 5; $j++)
    		{
    			if (!isset($queryRep[$j]))
    			{
    				$queryRep[$j] = "";
    			}
    		}
     
    		if ($queryRep[4] == 1)
    		{
    			$sortAtTopQuery = $mysqlcnx->query("SELECT Id FROM actualites WHERE AtTop = '1'");
    			$res = $sortAtTopQuery->fetch();
    			if ($res != false)
    			{
    				$q = $mysqlcnx->prepare("UPDATE actualites SET AtTop='0' WHERE Id=?");
    				$q->execute(Array($res['Id']));
    			}
    			$sortAtTopQuery->closeCursor();
    		}
    			$_SESSION['from'] = "postActu.php";
    			$query->execute($queryRep);
    			$mysqlcnx = NULL;
    			unset($mysqlcnx);
    	}
    ?>
    	<meta http-equiv="refresh" content="2; url=writeActu.php" />
      </body>
     
    </html>

  8. #8
    Expert confirm�

    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
    Par d�faut
    y'a pas de ligne 100 dans ton code, met exactement les m�mes choses,
    sinon tu n'as pas a mettre de htmlspecialchars sur tes param�tres

  9. #9
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2005
    Messages
    1 203
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 56
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 1 203
    Par d�faut
    Bonjour,

    j'ajoute : met tout le code PDO dans le try/catch...


  10. #10
    Expert confirm�

    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
    Par d�faut
    Citation Envoy� par ska_root Voir le message
    Bonjour,

    j'ajoute : met tout le code PDO dans le try/catch...

    pourquoi faire ? il est en mode exception si y'a un erreur le script s�arr�tera et affichera l'erreur

  11. #11
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2005
    Messages
    1 203
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 56
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 1 203
    Par d�faut
    heu, je ne connais pas bien les options de l'objet de connexion PDO, mais la doc dit :

    PDO::ERRMODE_EXCEPTION

    En plus de d�finir le code erreur, PDO lancera une exception PDOException et y d�finit les propri�t�s afin de repr�senter le code erreur et les informations compl�mentaires
    je ne vois pas o� il est pr�cis� que tu peux te passer de la capture...
    n�anmoins, je te crois

  12. #12
    Expert confirm�

    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
    Par d�faut
    Citation Envoy� par ska_root Voir le message
    je ne vois pas o� il est pr�cis� que tu peux te passer de la capture...
    n�anmoins, je te crois
    ...

    a quoi va te servir ta capture ?

  13. #13
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2005
    Messages
    1 203
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 56
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 1 203
    Par d�faut
    dans le cas pr�sent, � pas grand chose effectivement, mais dans ce cas, autant retirer tout le try/catch...


  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par d�faut
    Bonjour, j'actualise mes post voici les erreur pour cette page:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    Warning: PDO::prepare() [function.PDO-prepare]: SQLSTATE[HY000]: General error: constructor arguments must be passed as an array in /www3/OOV/oov/actu/postActu_PDO.php on line 36
     
    Warning: PDO::prepare() [function.PDO-prepare]: SQLSTATE[HY000]: General error: failed to instantiate user-supplied statement class in /www3/OOV/oov/actu/postActu_PDO.php on line 36
     
    Fatal error: Call to a member function execute() on a non-object in /www3/OOV/oov/actu/postActu_PDO.php on line 83
    En d�sespoir de cause j'ai tout transformer en mysqli mais le sujet m�int�resse puisque �a me fout les boules et que je veux le faire avec PDO. D'autant plus qu'il y a plein de personne dans ce cas (c.f. internet...) et qu'une r�ponse serai la bienvenue.

    P.S.: Je rappel que j'obtiens ces erreurs de mani�re al�atoire... des fois page blanche des fois erreurs...

    Citation Envoy� par ska_root Voir le message
    dans le cas pr�sent, � pas grand chose effectivement, mais dans ce cas, autant retirer tout le try/catch...

    Dans ce cas, si PDO provoque une erreur et qu'une exception est lanc�e a cet endroit du code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    		try
    		{
    			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    			$pdo_options[PDO::ATTR_PERSISTENT] = false;
    			$mysqlcnx = new PDO("mysql:host=localhost;dbname=newsoov", 'user', 'mdp', $pdo_options);
    		}
    Il ce pourrait que le message d'erreur contient les information de connection a la base SQL, i.e. le user et le mot de pass... ce qui serai emb�tant...

  15. #15
    Expert confirm�

    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
    Par d�faut
    essaye en supprimant

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $pdo_options[PDO::ATTR_PERSISTENT] = false;
    pourquoi le mettre sur false sachant qu'il l'est par d�faut ?

  16. #16
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par d�faut
    Effectivement mais c��tait pour �tre sur, a la base je l'avait pas mis. c'est mon boss qui planche avec moi la dessus qui m'avait demander d��tre sur de �a.
    �a ne change rien au probl�me l'erreur ne viens pas de la...

    Derni�re news: nous avons tester avec une base sqlite pour voire si c��tait mysql qui �tait mal conf�, pareil m�me erreurs.

    P.S.: a propos des options, j'ai essayer les deux maniere de faire:
    - celle comme montr� dans le code et
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    $mysqlcnx = new PDO("mysql:host=localhost;dbname=newsoov", 'user', 'mdp');
    $mysqlcnx->setAttribute('atribut', 'option');
    Avec cette deuxieme methode il semble qu'il soit plus dure d'obtenire l'affichage des erreurs.. ici la page reste blanche en ignorant tout le code. I.e si j'affiche le code source de la page ca donne:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    <html>
    <head></head>
    <body>
    <pre></pre>
    </body>
    </html>
    celon firebug... sinon si j'affiche la source directement via firefox, y a rien... page vide.

  17. #17
    Expert confirm�

    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
    Par d�faut
    c'est un erreur qui vient de la classe PDOStatement, qui visiblement n'arrive pas se charger, je te conseil de faire un test sur un autre serveur avec un version � jour de PHP

  18. #18
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par d�faut
    Citation Envoy� par stealth35 Voir le message
    c'est un erreur qui vient de la classe PDOStatement, qui visiblement n'arrive pas se charger, je te conseil de faire un test sur un autre serveur avec un version � jour de PHP
    Celons toi cela serai du a la version de PHP du serveur?
    Il est aussi vrai que sur mon WAMP comme dis dans mon premier post, le code marche tr�s bien...

    Je n'ai pas la possibilit� de teste sur un autre serveur la ou je suis. Mais si il s�av�re que le probl�me viens de l�, je me met sous mysqli de mani�re d�finitive.

  19. #19
    Expert confirm�

    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
    Par d�faut
    Citation Envoy� par Vodsky Voir le message
    Celons toi cela serai du a la version de PHP du serveur?
    y'a de grand chance ta version est vraiment obsol�te (5 ans), il est grand temps de la mettre � jour

  20. #20
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par d�faut
    Citation Envoy� par stealth35 Voir le message
    y'a de grand chance ta version est vraiment obsol�te (5 ans), il est grand temps de la mettre � jour
    Haha merci, je vais dire ca a mon boss, il va etre content

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 7
    Dernier message: 18/07/2005, 13h42
  2. Problème de connection Internet
    Par polka91 dans le forum Mandriva / Mageia
    R�ponses: 8
    Dernier message: 22/04/2005, 21h54
  3. Probleme de connection avec MSDE
    Par critok dans le forum MS SQL Server
    R�ponses: 4
    Dernier message: 02/04/2005, 00h20
  4. R�ponses: 10
    Dernier message: 16/03/2005, 18h25
  5. Probleme de connection entre postgresql et PgAccess
    Par Missvan dans le forum PostgreSQL
    R�ponses: 11
    Dernier message: 24/03/2004, 11h14

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