PHP MsSQL PDO或API
我通常使用PHP MySQL,因此,我对MsSQL的了解有点有限。我将要编写一个类,使我和我的同事执行MsSQL查询更加容易。然而,在我的研究中,我发现我有两个选择如何连接到MsSQL数据库;我可以使用PHP PDO库或SQLSRV API。对于我来说,后者似乎是更好的选择,因为我不熟悉PDO库及其工作原理,不过,如果PDO库是更好的选择,我愿意了解更多有关PDO库的信息 因此,我只想知道哪个选项更适合使用PHP与MsSQL数据库通信 此外,是否有人熟悉一个好的站点,并提供API的示例和文档?微软的网站不错,但有点偏颇和局限PHP MsSQL PDO或API,php,sql-server,sql-server-2008,Php,Sql Server,Sql Server 2008,我通常使用PHP MySQL,因此,我对MsSQL的了解有点有限。我将要编写一个类,使我和我的同事执行MsSQL查询更加容易。然而,在我的研究中,我发现我有两个选择如何连接到MsSQL数据库;我可以使用PHP PDO库或SQLSRV API。对于我来说,后者似乎是更好的选择,因为我不熟悉PDO库及其工作原理,不过,如果PDO库是更好的选择,我愿意了解更多有关PDO库的信息 因此,我只想知道哪个选项更适合使用PHP与MsSQL数据库通信 此外,是否有人熟悉一个好的站点,并提供API的示例和文档?微
非常感谢您的帮助。我建议您学习PDO 其中MySQL(i)仅用于MySQL,SQLSRV API仅用于MsSQL,PDO用于大约20个不同的数据库引擎。另外,它是面向对象的,并且在准备好的语句中支持命名参数
我建议您学习PDO 其中MySQL(i)仅用于MySQL,SQLSRV API仅用于MsSQL,PDO用于大约20个不同的数据库引擎。另外,它是面向对象的,并且在准备好的语句中支持命名参数
如果您打算为SQL编写一个包装器类,我建议您改为这样做。它是一个对象关系映射器(ORM),它使用对象表示数据库中的记录,并使用PDO的数据库抽象层(DBAL): PHP的对象关系映射器(ORM),它位于一个强大的 数据库抽象层(DBAL)。它的一个关键特性是 在专有的面向对象SQL中编写数据库查询的选项 一种被称为条令查询语言(DQL)的方言,灵感来自Hibernates HQL。这为开发人员提供了一个强大的SQL替代方案 保持灵活性,无需不必要的代码复制
如果您打算为SQL编写一个包装器类,我建议您改为这样做。它是一个对象关系映射器(ORM),它使用对象表示数据库中的记录,并使用PDO的数据库抽象层(DBAL): PHP的对象关系映射器(ORM),它位于一个强大的 数据库抽象层(DBAL)。它的一个关键特性是 在专有的面向对象SQL中编写数据库查询的选项 一种被称为条令查询语言(DQL)的方言,灵感来自Hibernates HQL。这为开发人员提供了一个强大的SQL替代方案 保持灵活性,无需不必要的代码复制
我同意@Truth的观点,即PDO是比SQLSRV更具可移植性的API,因此通常是更好的选择 然而,PDO有一个缺点:据我所知,它总是以“string”类型返回数据,而不管原始数据库中的数据类型是什么。关于为什么PDO是这样的各种其他SO帖子可以归结为“因为PHP上就是这样”。也许是这样,但仍然很糟糕:将日期时间或浮点数作为字符串返回会浪费带宽,降低精度,并由于小数点和日期格式的差异而引入国际化问题。恶心
出于显而易见的原因,我一直计划使用PDO驱动程序,但现在我来看看SQLSRV驱动程序,因为它保留了数据类型。我同意@Truth的观点,即PDO是比SQLSRV更可移植的API,因此通常是更好的选择 然而,PDO有一个缺点:据我所知,它总是以“string”类型返回数据,而不管原始数据库中的数据类型是什么。关于为什么PDO是这样的各种其他SO帖子可以归结为“因为PHP上就是这样”。也许是这样,但仍然很糟糕:将日期时间或浮点数作为字符串返回会浪费带宽,降低精度,并由于小数点和日期格式的差异而引入国际化问题。恶心
出于显而易见的原因,我一直计划使用PDO驱动程序,但现在我来看看SQLSRV驱动程序,因为它保留了数据类型。这非常有用,谢谢。在我开始学习如何使用PDO库之前,有没有内置的方法与一般的MsSQL和MySQL函数相同。e、 g.mysql\u real\u escape\u字符串?这不是一个问题,如果不是因为我可以写他们自己,但它会更好。命名参数有什么好处?@BenCarey第二个问题的答案就是第一个问题的答案!阅读链接docWell的安全部分,假设您希望根据用户输入从表中进行选择。在PDO中,您可以使用
从表中选择id,其中input=:input
,您可以想象当您有5个字段时的好处?10?. 您不需要记住哪个?
与您使用MySQLi时的情况相同,另外,当您不需要记住字符串/整数的顺序时,还可以增加灵活性。@ManseUK-yup,我注意到了!:-)!事实上,这一切都是有道理的,我相信很多人都觉得它非常有用,但是,我不认为它适用于我,因为我只是从HTML字段收集数据,用PHP验证它们,并插入/更新数据库。也许我误解了你说的话,如果那不相关的话。如果是的话,你能在你的答案中贴一个小的代码示例吗-D@Truth啊,我现在明白了!让它工作起来,让训练开始吧!最后一件事,你链接到的网站上说不要使用quote,但是prepare和execute方法都逃避了查询吗?这非常有用,谢谢。在我开始学习如何使用PDO库之前,有没有内置的方法与一般的MsSQL和MySQL函数相同。e、 g.mysql\u real\u escape\u str