#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.