PHP MsSQL PDO or API


PHP MsSQL PDO or API

我通常使用PHP MySQL,因此,我对MsSQL的了解有些有限。我即将编写一个类,使我自己和我的同事更容易执行MsSQL查询。然而,在我的研究中,我发现我有两种选择,即如何连接到MsSQL数据库;我可以使用PHP PDO库或SQLSRV API。后者对我来说似乎是更好的选择,因为我不熟悉PDO库及其工作方式,尽管如果PDO库是更好的选项,我愿意了解更多关于它的信息。

因此,实际上,我只是想知道哪个选项更适合使用PHP与MsSQL数据库通信?

此外,有人熟悉API的示例和文档的好网站吗?微软的网站很好,但有些偏见和局限性。

非常感谢您的帮助,谢谢。

我建议您学习PDO。

其中MySQL(i)仅适用于MySQL,SQLSRV API仅适用于MsSQL,PDO适用于大约20种不同的数据库引擎。此外,它是面向对象的,并支持已准备好的语句中的命名参数。

请参阅这篇伟大的文章(它是关于PDO与MySQLi的,但其中的参数是有效的)

如果您要为SQL编写一个包装类,我可以建议使用类似Doctrine的方法。它是一个对象关系映射器(ORM),它使用对象来表示数据库中的记录,以及使用PDO:的数据库抽象层(DBAL)

PHP的对象关系映射器(ORM),位于强大的数据库抽象层(DBAL)。其主要功能之一是在专有的面向对象SQL中编写数据库查询的选项受Hibernate启发,称为条令查询语言(DQL)的方言HQL。这为开发人员提供了一个强大的SQL替代方案在不需要不必要的代码复制的情况下保持灵活性。

我同意@Truth的观点,即PDO是一种比SQLRV更具可移植性的API,因此通常是更好的选择。

然而,PDO有一点不好:据我所知,它总是以"字符串"类型返回数据,而不考虑原始数据库中的数据类型。其他SO关于PDO为何如此的帖子可以归结为"因为PHP就是这样"。也许是这样,但它仍然很粗糙:将日期时间或浮点数字作为字符串返回会浪费带宽,降低精度,并由于小数点和日期格式的差异而带来国际化问题。恶心。

出于显而易见的原因,我一直计划使用PDO驱动程序,但现在我来看一下SQLSRV驱动程序,因为它保留了数据类型。