我正在尝试用PHP PDO构建一个应用程序。我需要我的查询非常通用,即同一个查询应该在任何DBMS中运行,我如何实现这一点?
例如,
MySQL-select * from emp limit 10,20
;
和
MS SQL-select * from (select *, ROW_NUMBER() as cnt from emp)x where cnt between 10 and 20
(类似于此)
如何在PDO中使用通用代码实现这两个功能。所以我只需要更改dbms(和驱动程序),然后其他的事情就可以正常工作了。
请帮忙。
谢谢!
SQL Server有一种完全不同的"限制"方法,特别是SQL Server没有MySQL提供的"范围"功能,要做到这一点,您需要将查询封装在子选择中。
所以。。。您可能正在寻找一些ORM/query构建器,这样您就可以名义上编写查询并设置限制/范围,然后这将需要一些方法来生成MySQL或SQL Server版本的查询。
以下是您想要的SQL Server样式的查询示例;)SQL Server 中的行偏移量
一个好的方法是使用Doctrine和它的查询语言http://doctrine.readthedocs.org/en/latest/en/manual/dql-doctrine-query-language.html