Page 1 sur 1

coder avec PDO / mySQL--> Class PDO not found in G:\www\s

Posté : 29 févr. 2008, 15:53
par serveur3
Bonjour,

J'ai bien :

-le module PDO et PDO Mysql (php_pdo et php_pdo_mysql.dll) activé dans le PHP ini,
- il est coché dans les extensions sur Wamp
- et j'ai bien libmysql.dll dans le system32 de windows.

voici mon code :

Code : Tout sélectionner

$user="root"; $pass=""; $dsn="mysql:host=localhost;dbname=publication"; //------connexion--------- try { $pdo=new PDO($dsn,$user,$user); } catch(PDOException $e) { die("Erreur !:". $e->getMessage()); }
le message qui m'est retourné est :
fatal error:Class 'PDO' not found in G:\www\laousetrouvemonsiteloca\classes\mapage.php

:( , quelqu'un sait-il pourquoi le moteur PHP ne va pas chercher les classes PDO, et va le chercher dans mapage.php ?

merci..

Posté : 29 févr. 2008, 16:04
par Hywan
T'as bien redémarre Apache ?

oui

Posté : 29 févr. 2008, 16:25
par serveur3
oui, cela ne change rien..
je viens de regarder le code sur PHPteam avec leur codePDO.. j'ai recoder la même chose, et j'ai toujours la même réponse erreur..

pourquoi va t'il chercher la classe PDO au niveau de la page.php ? :(

d'ailleurs voici le code de la page en entier..

Code : Tout sélectionner

<?php $dsn="mysql:host=localhost;dbname=$db"; $db="onimmenu"; $user="root"; $pass=""; //------connexion--------- try { $pdo=new PDO($dsn,$user,$pass); } catch(PDOException $e) { die("Erreur !:". $e->getMessage()); } //-----------lecture d'enregistrements---------- $sql ="SELECT menu.cle, menu.valeur FROM oniam.menu"; $pdo_result=$pdo->query($sql); while ($ligne = $pdo_result->fetch()) { print_r($ligne); } //fermeture $pdo = null; ?>

Posté : 29 févr. 2008, 16:44
par Berzemus
il ne cherche pas la classe pdo dans ta page, il dit juste ou se trouve l'erreur.

Moi je planche pour les modules qui ne sont pas chargés.. tu as essayé un phpinfo() ?

oui

Posté : 29 févr. 2008, 17:11
par serveur3
oui, j'ai regardé la page phpinfo()..

il est marqué :PDO Drivers -> mysql,sqlite2 : enabled

PDO driver for mysql, client library version : 5.0.45


lorsque je le lance du serveur localhost : j'ai le message:

fatal error: call to a member function fetch() on a non-object in G\......

:(


quelqu'un peut-il reprendre le code et le tester sur son serveur wamp ? (avec une base, login/mdp et requête adapté bien sur).. juste pour voir que c'est pas une erreur de code :?:

merci

Posté : 29 févr. 2008, 18:04
par Berzemus
ah ben c'est déjà un autre message ça.. pdo marche bien..

Posté : 29 févr. 2008, 18:16
par Hywan
Maintenant que PDO fonctionne, il te dit que fetch() est appelé sur un membre qui n'est pas un objet. query() retourne un objet PDOStatement normalement. Tente un var_dump($pdo_result);.
Sinon je t'invite à lire la documentation sur query, et surtout à lire l'exemple 1.

Posté : 29 févr. 2008, 18:25
par Jules Petibidon
Hello,

Ligne 2 : tu affecte $db à $dsn
Ligne 3 : tu définis $db

C'est pas logique :)

Intervertis ces deux lignes pour voir ?

oula c'est chaud

Posté : 29 févr. 2008, 18:30
par serveur3
ouhhh, la c'est bizarre..

bon c'est résolu.. j'explique, même si je comprends pas :shock:

phpdesigner a bien le chemin qui pointe sur le serveur localhost et le chemin repertoire local (c:\..) qui pointe bien sur wamp.

le "debugger" et le 'run' de phpdesigner pointe sur le propre moteur php de phpdesigner qui pointe sur php-cgi.exe et php.ini dans son répertoire à lui dans program files.

j'ai repointé le path du debugger et du run vers wamp..

logiquement, c'est vrai que en le lancant dans le 'run' du logiciel, je conçois l'erreur puisque cela va pointer sur son propre moteur qui n'a pas l'extension PDO.

mais pas en lancant du navigateur l'url "http://localhost/site/page.php" car là c'est le moteur wamp qui fait l'execution php.. non ?

le logiciel phpdesigner n'aurait pas pu agir comme serveur localhost , surtout si le chemin dans ses préférences 'localhost' pointait sur wamp...!! d'où je ne comprends pas

:?: :?:

en tout cas merci de m'avoir lu et aider. :)

PS, oui excuse merci, j'avais entretemps intervertit ligne 2 et 3.