J'utilise des packages de paires chez PHP pendant des années. Je suis en train de mettre à niveau / déplaçant des sites utilisant le package de poire MDB2 et n'a pas été mis à jour pour PHP 5.3.x.
in 5.3, MDB2 renvoie ces nouvelles erreurs ennuyeuses. P>
Unknown: Assigning the return value of new by reference is deprecated in /usr/local/lib/php/MDB2.php on line 390
7 Réponses :
Vous pouvez utiliser ZEND Framework support de base de données ou utiliser un orm Comme Doctrine ou Propel P>
Je vais certainement aller pour un ormes, au moins si vous travaillez sur un grand projet, pour lequel vous ne voulez pas utiliser sur les erreurs code> e_depecated code>, cependant: PHP 5.3 est assez jeune, et beaucoup de bibliothèques / logiciels / projets n'ont pas encore été adaptés - vous aurez probablement beaucoup de ceux du prochain couple des mois: - ( p> mysqli _ * code> ou des fonctions / méthodes PDO directement - Doctrine étant le plus développé / utilisé, de nos jours (c'est la valeur par défaut du cadre Symfony et peut être intégré dans le cadre Zend assez facilement) em>. p>
Oui, je suis d'accord sur l'immaturité de PHP 5.3, et je comprends que cela va prendre du temps pour nous tous à mettre à jour notre code, mais je ne pense pas que MDB2 sera jamais mis à jour (vous semble abandonné). La doctrine a fière allure. Merci.
Je vais commenter cela, car il arrive hautement sur les résultats de la recherche Google pour le problème. p>
J'ai contacté le développeur principal pour MDB2, qui a déclaré: P>
Veuillez consulter une copie de MDB2 de SVN, elle est entièrement PHP5.3 compatible avec de nombreuses améliorations de performance. J'attends actuellement des corrections au nouveau pilote SQL Server (Microsoft y travaille cette semaine), puis je vais pousser une nouvelle version stable. P> blockQuote>
(éditer, 4 ans plus tard: ce n'est plus raison, ne le faites pas) p>
Je viens de partir et je suis téléchargé la dernière version de mdb2 (mdb2-2.5.0b3) à partir de ici http : //ear.php.net/package/mdb2/download et il s'est débarrassé de toutes mes erreurs. Semble fonctionner bien avec PHP version 5.3.5 P>
J'ai entouré toutes les erreurs et avertissements obsolètes, en utilisant MDB2 et PHP 5.3, Mais j'ai eu des erreurs vraiment étranges sur MDB2, alors vous demandez ce qui se passe sous le capot. Mon environnement est Centos, PHP 5.3, MDB2-2.4.1, MySQL 5.0.77 P>
À tout moment, j'utilise Autoexecute 2x dans un fichier PHP, le 2e échoue (même si j'essaie d'utiliser préparer, puis exécuter). Je me suis connecté à mon journal de requête MySQL et, tandis qu'un insert réussi affiche les valeurs, un insert échoué n'aura toujours que les espaces réservés. c'est-à-dire: valeurs (?, ?,?,?). Et le MDB2_Error mentionnera toujours Récursion em> p>
lastinsertid () n'a jamais travaillé avec des tables MySQL et des champs AutoOnCremmencrement (avec pilote MySQLI)
J'ai fait suffisamment de débogage dessus, allant au fond de la pile d'appels et que le résultat obtienne est tellement enveloppé dans des objets, que vous ne pouvez pas dire ce que c'est, jusqu'à la fin.
J'aimerais utiliser plus de MDB2, mais en fait, je devais revenir à la droite MySQL, à plusieurs reprises à cause de ces problèmes. Peut-être que Lucas ou d'autres développeurs pourraient éclairer un peu de lumière sur ce sujet ou signaler dans la bonne direction. p>
PEAR.PL.NET/BUGS/BUG.PHP?ID=18050 dit que vous devez mettre à niveau votre version MDB2 de 2.4.1 à 2.5.0B3
Vous pouvez également effectuer une mise à niveau vers la version bêta 3 via la ligne de commande explication de la vérification de la version stable actuelle n'est pas conforme à la notification d'erreur stricte:
http://pear.php.net/bugs/bug.php?id=9756 p> source pour la commande:
http://pear.php.net/bugs/bug.php?id=18050 p> p>
Il suffit de lancer ceci là-bas - j'ai mis à jour à MDB2-bêta à l'aide des commandes ci-dessus et mon site a commencé à rompre sans jeter des erreurs. En essayant toujours de déterminer comment le réparer avec le client en question qui freblaient actuellement le site étant cassé.
EDIT: OK, il s'agissait d'un bogue d'erreur fatal dans la mail / la file d'attente récemment introduite. J'ai mis à jour mes packages de poire pendant que j'étais là-bas et c'est comme ça que j'ai introduit le bogue. On dirait que le patch ne l'a pas encore fait aux mises à jour, mais il était assez facile de modifier moi-même le fichier.
Si vous utilisez uniquement MDB2 pour MySQL, vous pouvez le remplacer et garder la majorité des fonctions avec MDBDID: http://azure-dev.kiao.net/648-mdb2 Vous n'aurez que peu de code à adapter. P>