Я использую грушевые пакеты в php в течение многих лет. Я в процессе обновления / перемещения сайтов, которые используют пакет груши MDB2, и он не был обновлен для PHP 5.3.X.
В 5.3 MDB2 возвращает эти новые досадные ошибки.
Unknown: Assigning the return value of new by reference is deprecated in /usr/local/lib/php/MDB2.php on line 390
Я знаю, что могу изменить настройки отчетов об ошибках, чтобы избавиться от них, но я бы предпочел не делать никаких исключений. В любом случае, кто-нибудь еще использует MDB2 в наши дни и имеет решение? Есть ли похожие пакеты баз данных, которые вы рекомендуете?
Я бы определенно пошел на ORM, по крайней мере, если вы работаете над крупным проектом, для которого вы не хотите mysqli_*
использовать функции / методы mysqli_*
или PDO – Doctrine является самой развитой / используемой в наши дни (это по умолчанию ORM Symfony Framework и может быть легко интегрирован в Zend Framework) .
Однако об ошибках E_DEPRECATED
: PHP 5.3 довольно молод, и многие библиотеки / программное обеспечение / проекты еще не адаптированы – у вас, вероятно, будет много таких в ближайшие пару месяцев 🙁
Вы также можете перейти на версию бета-версии через командную строку
pear upgrade MDB2-beta pear upgrade MDB2_Driver_Mysql-beta
Объяснение, почему текущая стабильная версия не соответствует строгим сообщениям об ошибках: http://pear.php.net/bugs/bug.php?id=9756
Источник для команды:
http://pear.php.net/bugs/bug.php?id=18050
Я собираюсь прокомментировать это, так как он поднимается на результаты поиска Google по этой проблеме.
Я связался с ведущим разработчиком MDB2, который сказал:
пожалуйста, проверьте копию MDB2 от SVN, она полностью совместима с PHP5.3, с множеством улучшений производительности. В настоящее время я жду некоторых исправлений для нового драйвера SQL Server (Microsoft работает над этим на этой неделе), а затем я буду продвигать новую стабильную версию.
(Редактировать, 4 года спустя: это уже не так, не делайте этого)
Я только что отправил и загрузил последнюю версию MDB2 (MDB2-2.5.0b3) здесь http://pear.php.net/package/MDB2/download, и он избавился от всех моих ошибок. Кажется, отлично работает с PHP версии 5.3.5
Вы можете использовать поддержку базы данных Zend Framework или использовать ORM, например Doctrine или Propel
Я обошел все устаревшие ошибки и предупреждения, используя MDB2 и PHP 5.3, но у меня есть некоторые действительно странные ошибки на MDB2, так что интересно, что под капотом. Моя среда – CentOS, PHP 5.3, MDB2-2.4.1, MySQL 5.0.77
В любое время я использую autoExecute 2x в php-файле, второй – неудачный (то же самое, если я пытаюсь использовать prepare, а затем выполнить). Я зарегистрировался в журнале запросов MySQL, и, пока успешный INSERT покажет значения, неудачный INSERT всегда будет иметь только заполнители. т.е.: значения (?,?,?,?). И MDB2_Error всегда будет упоминать RECURSION
lastInsertID () никогда не работал с таблицами MySQL и полями автоинкремента (с драйвером mysqli). Я сделал достаточно отладки на нем, углубляясь в стек вызовов, и результат получился таким образом завершенным в объектах, что вы не можете сказать, что это такое, до самого конца. Мне бы хотелось использовать MDB2 больше, но на самом деле мне пришлось вернуться к прямому mysql, много раз из-за этих проблем. Возможно, Лукас или другие разработчики могут пролить свет на эту тему или указать нам в правильном направлении.
Если вы используете только MDB2 для MySQL, вы можете заменить его и сохранить большинство функций с помощью MDBDid: http://azure-dev.kiao.net/648-mdb2 У вас будет мало кода для адаптации.