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

时间:2015-10-17 20:11:36

标签: php mysql sql pdo abstraction

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

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

使用PDO时,此类案例的最佳做法是什么?

编辑:

我的意思是,我如何确保DATE_SUB也适用于支持PDO的所有数据库风格?

2 个答案:

答案 0 :(得分:5)

  

如何确保DATE_SUB也适用于支持PDO的所有DB风格?

你不能。

如果您需要与数据库无关的图层,请查看Doctrine

答案 1 :(得分:2)

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

因此,DBMS特定的功能(例如MySQL中的DATE_SUB())和SQL版本对于特定的DBMS(例如MySQL)来说很好,但是没有为其他DBMS(例如MS SQL服务器)模拟。

引用PHP / PDO manual

  

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