Php PDO使用的SQL是否独立于数据库?

Php PDO使用的SQL是否独立于数据库?,php,database,pdo,Php,Database,Pdo,不同数据库的SQL实现略有不同。PDO能处理吗 如果我编写一个SQL查询,与PDO一起使用以访问MySQL数据库,然后告诉PDO开始使用不同类型的数据库,那么查询会停止工作吗?或者PDO会“转换”查询以使其继续工作 如果PDO不这样做,是否有任何PHP库允许我根据特定语法编写SQL,然后库将处理SQL转换,以便在不同的数据库上运行?来自PHP手册: PDO提供了数据访问抽象 层,这意味着,无论 您使用的是哪个数据库 使用相同的函数发出查询 并获取数据。PDO不提供 数据库抽象没有 重写SQL或模

不同数据库的SQL实现略有不同。PDO能处理吗

如果我编写一个SQL查询,与PDO一起使用以访问MySQL数据库,然后告诉PDO开始使用不同类型的数据库,那么查询会停止工作吗?或者PDO会“转换”查询以使其继续工作

如果PDO不这样做,是否有任何PHP库允许我根据特定语法编写SQL,然后库将处理SQL转换,以便在不同的数据库上运行?

来自PHP手册:

PDO提供了数据访问抽象 层,这意味着,无论 您使用的是哪个数据库 使用相同的函数发出查询 并获取数据。PDO不提供 数据库抽象没有 重写SQL或模拟缺少的 功能。你应该使用 完整的抽象层 我需要那个设施

因此,您不能更改数据库并期望一切都像以前一样工作。这取决于您使用的查询。它们是“简单”的SQL92查询还是对特定数据库使用特殊功能


例如,必须重写带有“LIMIT 10,20”的mysql查询才能使用Oracle DB或Sqlite。他们使用“LIMIT 20 OFFSET 10”

PHP没有可以自动为您转换SQL的库。如果你想要这种功能,你应该考虑像条令这样的实现。当然,这是要付出代价的,因为在项目中使用它需要学习曲线,再加上编写SQL不再像编写字符串那样简单。你应该问问自己,你是否绝对需要独立于数据库的代码。

以及MSSQL上完全不同的东西。我看了手册,但找不到任何东西;显然你比我更善于观察!不幸的是,没有办法避免需要编写独立于数据库的代码。不过,谢谢你的推荐。我看过ORM,但它们并不是我想要的,但你只是给了我一个想法,让我看看它们的源代码,看看它们是如何生成查询的,并尝试自己实现一些东西。还有一些类似MDB2的东西:主要是SQL,但一些PHP函数调用代替了“限制”代码,例如。@Narcissus:谢谢!我现在正在阅读文档,到目前为止,它看起来像是我想要的。