Мне нужно использовать определенные функции в MySQL, которые я не уверен, что доступен в других вариантах БД. Например.,
SELECT DATE_SUB(mydate, INTERVAL 5 DAY) AS foo FROM table
Какова наилучшая практика для подобных случаев при использовании PDO?
Редактировать:
Я хочу спросить, как я могу убедиться, DATE_SUB
также будет работать во всех разновидностях БД, поддерживающих PDO?
Как я могу убедиться, что DATE_SUB также будет работать во всех вариантах БД, поддерживающих PDO?
Ты не можешь
Если вы хотите слой, независимый от базы данных, посмотрите на доктрина
PDO абстрагирует связь с вашей базой данных, но ничего не делает для операторов SQL, кроме добавления поддержки подготовленных операторов для всех СУБД.
Специфические функции СУБД (например, DATE_SUB()
в MySQL) и версии SQL, следовательно, подходят для этой конкретной СУБД (например, MySQL), но не эмулируются для других СУБД (например, сервер MS SQL).
Цитировать PHP / PDO руководство:
PDO обеспечивает уровень абстракции доступа к данным, что означает, что независимо от того, какую базу данных вы используете, вы используете одни и те же функции для выдачи запросов и извлечения данных. PDO не обеспечивает абстракцию базы данных; он не переписывает SQL и не эмулирует отсутствующие функции. Вы должны использовать полноценный слой абстракции, если вам нужен этот объект.