Стандартные библиотеки подключений для MySQL, MSSQL и Oracle в PHP

#php #database

Вопрос:

Я ищу стандартный способ подключения к базам данных на PHP. Мы все там были — сначала начинали с какого-то рудиментарного кода для подключения/запроса/итерации/вставки/отключения, затем код рос по мере роста программы, и в итоге получился беспорядок, который вряд ли можно использовать повторно.

Я знаю, что существует много библиотек/классов PEAR, PECL и других PHP, которые могут соответствовать моему описанию, но какие из них поддерживаются, используются и доказали свою эффективность и отсутствие ошибок?

Комментарии:

1. Можете ли вы указать, какой бренд базы данных вы используете? например, MySQL, Oracle, Microsoft, PostgreSQL или смесь?

2. У каждого проекта свои требования, и у заказчика много времени уже есть база данных, поэтому он обычно хочет использовать существующую. По моему опыту, большинство моих клиентов работают либо с MySQL, MSSQL, либо с Oracle. Если у них нет базы данных, я предлагаю им, конечно, запустить MySQL.

Ответ №1:

если вы используете PHP 5, попробуйте PDO

Ответ №2:

Я полагаю, что Zend_Db еще не упоминался…

  • MDB2 от PEAR: очень стабильный, также обеспечивает уровень, который реализует все функции, поддерживаемые MDB2, во всех базах данных, где его можно, по крайней мере, смоделировать. Я использовал его в течение многих лет с большим успехом.
  • Zend_Db от Zend Framework: Я только начал использовать более высокие уровни всей инфраструктуры БД Zend, но она кажется довольно стабильной и чрезвычайно хорошо продуманной.
  • Собственный PDO PHP5: Я его вообще не использовал, но я считаю, что он самый простой из всех. Фактически, и MDB2, и Zend_Db могут использовать PDO в качестве базового слоя.

Все вышеперечисленные реализации подготавливаются и выполняются. Из вышеперечисленного MDB2 является наиболее зрелым, так как он существует уже давно и основан на DB и MDB. Zend_Db, по-видимому, наиболее хорошо продуман. Я знаю, что есть и другие, но у меня нет опыта или каких — либо знаний ни о ком из них.

Ответ №3:

попробуйте библиотеки объектно-реляционного сопоставления, такие как Propel и Doctrine, оба используют PDO в качестве уровня абстракции базы данных, поэтому они в значительной степени работают на всех движках.

Ответ №4:

Эти двое, на мой взгляд, самые лучшие. Хотя я не могу утверждать, что перепробовал их все 🙂

Если в Linux вам понадобятся бесплатные диски для подключения к MSSQL, независимо от выбранной вами библиотеки.

Ответ №5:

Рассматривая новые объекты подключения к БД/запросов, пытаясь решить, кому писать или использовать новые библиотеки, мы решили, что лучше всего написать свои собственные. В конце концов, он, вероятно, не обладает той гибкостью, которой обладают многие другие библиотеки, но мы добавили такие функции, как GetAll() получение всех строк в массиве с ключом или GetAllKeyed() возврат массива с ключом с идентификатором в качестве ключа. Еще один отличный GetOne() вариант для использования, когда ваш выбор состоит только из 1 столбца. Все это значительно сократило объем кода.

Еще одна особенность заключается в том, что при выполнении запроса он определяет, какой это тип запроса ( INSERT UPDATE , SELECT , DELETE , и т.д.), А затем возвращает соответствующую информацию (например INSERT , идентификатор последней вставки или DELETE количество удаленных строк).

Но мы также скопировали такие функции, как Подготовка и выполнение, из PEAR:DB.