如何将PDO用于特定于数据库的函数


How to use PDO for database-specific functions?

我需要在MySQL中使用特定的函数,我不确定在其他DB风味中是否可用。例如,

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

当使用PDO时,这种情况下的最佳实践是什么?编辑:

我想问的是,我如何确保DATE_SUB也能在所有支持PDO的DB风格中工作?

我如何确保DATE_SUB也将在支持PDO的所有DB口味中工作?

你不能。

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

PDO将抽象与数据库的连接,但除了为所有DBMS添加对准备语句的支持外,它对SQL语句没有做任何事情。

DBMS的特定功能(例如MySQL中的DATE_SUB())和SQL版本因此与特定的DBMS(例如MySQL)很好,但不模拟其他DBMS(例如MS SQL server)。

引用PHP/PDO手册:

PDO提供了一个数据访问抽象层,这意味着,无论使用哪个数据库,都可以使用相同的函数来发出查询和获取数据。PDO不提供数据库抽象;它不会重写SQL或模拟缺失的功能。如果需要,应该使用成熟的抽象层。