Discussion:
configuration et requete PDO
(trop ancien pour répondre)
jero
2007-08-07 10:40:13 UTC
Permalink
Bonjour,

je suis surtout branché bases de données et plus particulièrement
MySQL. J'ai bien quelques notions de PHP mais par exemple je n'ai
jamais programmé en modèle objet ...
Je suis en train de débugger une application en PHP et il y a toute
une partie de ce qui a été développé qui repose sur un algorythme loin
d'être irréprochable.
N'étant afin de corriger cela j'ai crééé une procédure stockée dans
MySQL.

j'ai regardé quelques doc PHP pour trouver comment appeler la
procédure stockée. Apparemment il faut que soient installées les
extensions :
extension=php_pdo.dll (le serveur est IIS ...)
extension=php_pdo_mysql.dll
extension=php_mysql.dll (évidemment !)

je les ai donc décommentées au niveau du fichier ini.
D'abord je ne vois aucune référence à PDO lorsque j'affiche le
résultat de
phpinfo();

Est-ce normal ? j'ai bien testé sur d'autres exetension pour vérifier
que je modifiait bien le bon fichier php.ini, et pas de doute
possible.

Ensuite lorsque j'écris dans mon fichier PHP :

try {
$procTreatRoles = new
PDO('mysql:host=localhost;dbname=musiclassics', 'root', '');
$treatInstrumentalRoles = $procTreatRoles->prepare("CALL
TreatRoles(:work_id, :roleType, :castTable, :rolesTable)");
$treatInstrumentalRoles->bindParam(':work_id', $work_id);
$treatInstrumentalRoles->bindParam(':roleType', $roleType);
$treatInstrumentalRoles->bindParam(':castOrder', $castOrder);
$treatInstrumentalRoles->bindParam(':rolesOrder', $rolesOrder);

$work_id = $this->work_id;
$roleType = 'instrumental';
$castOrder = $array_order;
$rolesOrder = $instrumental_roles_order;
$treatInstrumentalRoles->execute();

} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}

la page web qui déclache cette partie de code affiche le message :
Fatal error: Class 'PDO' not found in C:\Inetpub\wwwroot\monsite
\classes\Work.php on line 1041

J'ai inclu ce script à l'interieure d'une fonction. Peut-être est-ce
cela qui pose probleme. Mais là j'avoue que je ne sais pas à quel
niveau mettre cela.

Quelqu'un peut-il me conseiller ?
D'avance merci
Jero.
jeremie fouche
2007-08-07 21:46:16 UTC
Permalink
Post by jero
Bonjour,
je suis surtout branché bases de données et plus particulièrement
MySQL. J'ai bien quelques notions de PHP mais par exemple je n'ai
jamais programmé en modèle objet ...
Je suis en train de débugger une application en PHP et il y a toute
une partie de ce qui a été développé qui repose sur un algorythme loin
d'être irréprochable.
N'étant afin de corriger cela j'ai crééé une procédure stockée dans
MySQL.
j'ai regardé quelques doc PHP pour trouver comment appeler la
procédure stockée. Apparemment il faut que soient installées les
extension=php_pdo.dll (le serveur est IIS ...)
extension=php_pdo_mysql.dll
extension=php_mysql.dll (évidemment !)
Je n'y connais rien a PDO, mais il me semble que les procédures stockées
sont accessibles via mysqli, et non mysql.

J'espere que ca peut t'aider
--
Jérémie
jero
2007-08-08 12:20:24 UTC
Permalink
Post by jeremie fouche
Je n'y connais rien a PDO, mais il me semble que les procédures stockées
sont accessibles via mysqli, et non mysql.
J'espere que ca peut t'aider
J'ai posté un message hier pour dire que j'avais "résolu" le probleme,
c'est a drie qu'aprés un redemarrage de la machine serveur et pas
seulement du programme, les choses semblaient d'aplomb et que je
n'avait plus qu'à ajuster ma syntaxe qui à quelques détails prés et
celle indiquée dans mon premier post.
J'avoue par ailleurs que j'avais décommenté dans mon fichier de config
l'exetension PDO pour msqli et celle pour mysql ; je ne compte enlever
aucune de deux pour le moment :) pourquoi changer une équipe qui
gagne ?

+°+
jerome
Mickael Wolff
2007-08-09 17:56:36 UTC
Permalink
Post by jeremie fouche
Post by jero
j'ai regardé quelques doc PHP pour trouver comment appeler la
procédure stockée. Apparemment il faut que soient installées les
extension=php_pdo.dll (le serveur est IIS ...)
extension=php_pdo_mysql.dll
extension=php_mysql.dll (évidemment !)
Est-ce qu'après avoir décommenté les options, tu as redémarré le
serveur Web ?
Post by jeremie fouche
Je n'y connais rien a PDO, mais il me semble que les procédures stockées
sont accessibles via mysqli, et non mysql.
Je viens de tester sur PHP 5.2.1. mysql_query ne m'a pas permis
d'appeler une procédure stockée. mysqli::query() a bien fonctionné.

Je ne sais pas si le troll est déjà passé ici, mais il semblerais,
d'après des recherches que j'ai effectué, que PDO est à la ramasse en
terme de performances. Mais j'avoue ne pas encore avoir testé.

Mes 2c€ :)
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Continuer la lecture sur narkive:
Loading...