php - SQLSRV 驱动程序与用于 PHP 和 MS SQL Server 的 PDO 驱动程序

标签 php sql-server pdo driver

在选择 SQLSRV 驱动程序与 PDO 驱动程序(用于 PHP 和 MS SQL 服务器)之间时,我应该考虑哪些因素?

我看到了这篇之前的 Stackoverflow 帖子 ( When using PHP on Windows, what is better (1) the native driver for SQL Server or (2) the PDO driver? ),但答案似乎有点缺乏,并且没有提到使用 this article 中提到的 SQLSRV 驱动程序的所有好处。 .

我正在寻找一个全面且最新的答案(例如,SQLSRV 驱动程序是否仍然只适用于 Windows?)程序员可以作为资源引用的答案。

最佳答案

SQLSRV 和 PDO_SQLSRV 是两个 current-generation php drivers available from Microsoft ,但它们都使用相同的底层代码:SQL Server Native Client 11。(这就是为什么没有 Mac 或 Linux 版本的 php 驱动程序:它们只是包装器。)两个驱动程序的性能应该是相似的;这只是您喜欢哪种 API 的问题。

在大多数情况下,出于跨平台的考虑,人们会使用 PDO_SQLSRV 驱动程序。然而,在为一个新的(小)项目查看了这两个驱动程序之后,我选择了 SQLSRV 驱动程序,因为它返回数据作为底层 SQL Server 数据类型的[映射],而 PDO_SQLSRV 将所有内容作为字符串返回。

所以如果你的sql是:

SELECT 1234 as integer, Cast(123.456 as float) as float, 
       getdate() as date, '1234' as string1,'123.456' as string2;

然后来自 PDO_SQLSRV 的行的 var_dump 给出:

  array(1) {
    [0] =>
    array(5) {
      'integer' =>
      string(4) "1234"
      'float' =>
      string(7) "123.456"
      'date' =>
      string(23) "2012-12-06 22:35:05.373"
      'string1' =>
      string(4) "1234"
      'string2' =>
      string(7) "123.456"
    }
  }

而 SQLSRV 驱动程序给出:

array(1) {
    [0] =>
    array(5) {
      'integer' =>
      int(1234)
      'float' =>
      double(123.456)
      'date' =>
      class DateTime#1 (3) {
        ...
      }
      'string1' =>
      string(4) "1234"
      'string2' =>
      string(7) "123.456"
    }
  }

无论我是否愿意,PDO_SQLSRV 都将我的所有数据都转换为字符串,这让我抓狂,所以我使用了 SQLSRV。 (我不得不承认我设置了 ReturnDatesAsStrings=true 因为我懒得处理日期类。)

我也更喜欢语法,但这就是我。

关于php - SQLSRV 驱动程序与用于 PHP 和 MS SQL Server 的 PDO 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11614536/

相关文章:

SQL COUNT 行结果在单独的列中

php - 将数组值存储在单独的行中

php - 如何在 while 循环中从另一个查询执行第二个 PDO mysql 查询?

php - TABLE 的 SQL View 以及条件 COUNT 的记录

sql - 为什么在使用数据库邮件时出现以下错误 -> 过程 sysmail_verify_profile_sp,配置文件名称无效?

java - 从数据库表中提取信息 php

sql - 将标识列添加到 SQL Server 2008 中的 View

php - 有交易时如何处理错误?

php - 如何从 PDO 获取最后插入的插入行 ID

php - 按值具有不同颜色的 MySql 表