Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MsSQL PDO或API_Php_Sql Server_Sql Server 2008 - Fatal编程技术网

PHP MsSQL PDO或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的示例和文档?微

我通常使用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