我需要在MySQL中使用特定的函数,我不确定在其他DB风味中是否可用。例如,
SELECT DATE_SUB(mydate, INTERVAL 5 DAY) AS foo FROM table
我想问的是,我如何确保DATE_SUB
也能在所有支持PDO的DB风格中工作?
我如何确保DATE_SUB也将在支持PDO的所有DB口味中工作?
你不能。
如果你想要一个独立于数据库的层,看看Doctrine
PDO将抽象与数据库的连接,但除了为所有DBMS添加对准备语句的支持外,它对SQL语句没有做任何事情。
DBMS的特定功能(例如MySQL中的DATE_SUB()
)和SQL版本因此与特定的DBMS(例如MySQL)很好,但不模拟其他DBMS(例如MS SQL server)。
PDO提供了一个数据访问抽象层,这意味着,无论使用哪个数据库,都可以使用相同的函数来发出查询和获取数据。PDO不提供数据库抽象;它不会重写SQL或模拟缺失的功能。如果需要,应该使用成熟的抽象层。