如何将 PDO 用于特定于数据库的功能?

How to use PDO for database-specific functions?

我需要使用 MySQL 中的特定功能,我不确定其他数据库版本是否可用。例如,

SELECT DATE_SUB(mydate, INTERVAL 5 DAY) AS foo FROM table

使用 PDO 时,对于这种情况,最佳做法是什么?

编辑:

我想问的是,如何确保 DATE_SUB 也适用于所有支持 PDO 的数据库版本?

PDO 将抽象与您的数据库的连接,但除了为所有 DBMS 添加对准备好的语句的支持外,它不会对 SQL 语句执行任何操作。

DBMS 特定功能(例如 MySQL 中的 DATE_SUB())和 SQL 版本因此适用于该特定 DBMS(例如 MySQL),但不模拟其他 DBMS(例如 MS SQL 服务器)。

引用 PHP/PDO manual:

PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility.

how can I make sure DATE_SUB will also work in all DB flavors that supports PDO?

你不能。

如果你想要一个独立于数据库的层,请查看Doctrine