|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Inscription : octobre 2008 Messages : 745 ![]() |
J'ai cette requete basique qui ne veut pas marcher, pourtant j'ai verifié 10 fois et il me semble pas avoir fait d'erreur.
Code :
Et donc voici l'erreur qui ne me parle vraiement pas : Code :
|
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Hello
Je suppose que mysql est un singleton PDO je me trompe ? et que donc $dbh est une référence sur un objet PDO. Si tel est bien le cas, c'est la méthode PDO::exec que tu dois appeller. 'execute' est une méthode de PDOStatement que tu dois appeller sur l'objet retourné par PDO::prepare. Tu devrais munir ton singleton d'une méthode statique 'exec' afin de faire directement mysql::exec() au lieu de récupérer la référence à chaque fois. Au passage, si l'exeption "invalid data source name" c'est que ton DSN est mauvais et donc l'instanciation de PDO à échoué. Read more: http://www.php.net/manual/en/book.pdo.php Edit --- Je te file ma classe singleton pour PDO: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() Inscription : octobre 2008 Messages : 745 ![]() |
Merci
Mais ma classe a toujours bien fonctionné, et oui je me susi trompé dans le code, c'est execute() mais exec() mais ce la ne change strictement rien a l'erreur. Voici ma classe que je j'utilise depuis plusieurs années deja : Code :
|
||
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Benjamin Delespierre > y'a pas de static pour ta fonction instance
thebarbarius > d'ou sortent les 'xxx' dans : new PDO('xxx', 'xxx', 'xxx'); ? si vous voulez rendre n'importe quelle classe en Singleton faites : Code :
__________________
http://blog.stealth35.com/ |
||
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : octobre 2008 Messages : 745 ![]() |
Le premier XXX est le host, le suivant le user et l'autre le mot de passe de connexion a mysql.
|
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
oui mais c'est des constantes ou c'est écrit en dur dans le code ?
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : octobre 2008 Messages : 745 ![]() |
C'est erit en gros.
pas de constante ni de variable. |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
ton erreur vient du fait que tu fais execute et pas query/exec
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#9 | ||
|
Membre habitué
![]() Inscription : octobre 2008 Messages : 745 ![]() |
Oui je me suis trompé en recopiant le code
Code :
Mais l'erreur est la meme sa change rien. |
||
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
c'est tes ta connexion qui est fausse. verfiie bien les valeurs la ton DNS c'est 'DB_DNS' il est considéré comme du texte la
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : octobre 2008 Messages : 745 ![]() |
Je met des constantes alors ?
|
|
|
00
|
|
|
#12 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
tu mets ce que tu veux dument que ça soit un DSN correct.
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#13 | ||||
|
Membre habitué
![]() Inscription : octobre 2008 Messages : 745 ![]() |
Ah c'est bon j'avais omis d'inserer sa
Code :
Ce qui donne : Code :
|
||||
|
|
00
|
|
|
#14 | |||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
maix bien vu stealth... Note que pour ton singleton, tu pourrais le munir d'une méthode statique __callStatic pour appeller les méthodes d'instance nativement. ça ressemblerait plus ou moins à ça: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|||
|
00
|
|
|
#15 | |||||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
non si il n'est pas mis static tu vas avoir une erreur : Strict Standards: Non-static method mysql ::getInstance() should not be called statically Pour ma classe pas besoin de faire de __call non plus puisque qu'il retourne l'instance et méthodes existes et aussi regarde Reflection te permet de contourner ton problème de switch tien si veux : une classe qui permet de faire du static avec tout les classes de PHP Code :
__________________
http://blog.stealth35.com/ |
|||||
|
|
00
|
|
|
#16 | ||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Citation:
MaClasse::maMethodeInstance(); au lieu de MaClass::getInstance()->maMethodeInstance(); Ton Singleton factory est vraiment pas mal, tu m'en veux pas si je te le pique ? Remarque, je serais toi je le mettrait cette classe en final sinon bonjour les problèmes quand elle sera héritée... Ou alors tu utilise ce hack: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||
|
00
|
|
|
#17 | |||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
Citation:
Citation:
__________________
http://blog.stealth35.com/ |
|||
|
|
00
|
|
|
#18 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Et puis j'ai rien inventé, j'ai vu l'idée dans Lithium et j'ai fait un bench, et vu le gain de perfs, je préfère faire comme ça systématiquement plutôt qu'appeler call_user_func ou une classe de réflexion qui sont incroyablement lentes. Cela étant, il y a un hic avec ton factory, on ne peut pas l'utiliser sur des classe en dehors du namespace racine... je vais faire un test avec des use statements pour voir...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#19 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
Citation:
Mine de rien ca fait aussi un peu office de Registry
__________________
http://blog.stealth35.com/ |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com