PHP MS 上的 v5.6 PDO SQL Server 2014
PHP v5.6 PDO on MS SQL Server 2014
问题
我目前无法使用 PHP 中的 PDO 连接到我的数据库。
规格
- PHP 版本 5.6.9
- 数据库:Microsoft SQL Server 2014 on 2008 R2
- 来自 phpinfo():PDO 驱动程序:mysql、odbc、sqlite
- 使用 IIS 6.1
我试过的
我刚刚将 Microsoft 的 SQLSRV32.exe 文件中的驱动程序(从这个 link: https://www.microsoft.com/en-us/download/details.aspx?id=20098)安装到我的 PHP 扩展文件夹中,但是我仍然不能似乎连接到我的数据库。 (是的,我重新启动了 IIS)
我可以获得连接以使用旧的连接方法。
我的代码
我目前的PHPPDO连接代码如下:
try {
$this->pdo = new PDO('odbc:host='.$this->hostname.':'.$this->port.';dbname='.$this->database,$this->username,$this->password);
} catch (PDOException $e) {
echo 'Failed to get DB handle: '.$e->getMessage().'<br/>';
exit;
}
上面的代码在我的 MyPDO class 构造函数中,因此当我实例化我的 class 时,它连接 $pdo = new MyPDO();
.
我的代码的结果
问题是我收到此错误作为输出:
Failed to get DB handle: SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
非常感谢任何解决此问题的帮助!
仔细检查您的 php.ini 并确认您有行:
extension=php_sqlsrv_56_nts.dll
extension=php_pdo_sqlsrv_56_nts.dll
仅限 PDO php_pdo_sqlsrv_56_nts.dll 是强制性的。
- 在 PDO 驱动程序部分的 phpinfo() 中,您应该有:sqlsrv
使用PDO_SQLSRV DSN而不是odbc,例如:
$this->pdo = new PDO( "sqlsrv:server=$hostname,$port;Database=$dbname", $username, $password);
或者如果您有完整的数据源名称(例如 localhost\SQLEXPRESS)
$this->pdo = new PDO( "sqlsrv:server=$serverName;Database=$dbname", $username, $password);
如果您收到 找不到驱动程序 异常,这意味着没有加载 sqlsrv 扩展。
问题
我目前无法使用 PHP 中的 PDO 连接到我的数据库。
规格
- PHP 版本 5.6.9
- 数据库:Microsoft SQL Server 2014 on 2008 R2
- 来自 phpinfo():PDO 驱动程序:mysql、odbc、sqlite
- 使用 IIS 6.1
我试过的
我刚刚将 Microsoft 的 SQLSRV32.exe 文件中的驱动程序(从这个 link: https://www.microsoft.com/en-us/download/details.aspx?id=20098)安装到我的 PHP 扩展文件夹中,但是我仍然不能似乎连接到我的数据库。 (是的,我重新启动了 IIS)
我可以获得连接以使用旧的连接方法。
我的代码
我目前的PHPPDO连接代码如下:
try {
$this->pdo = new PDO('odbc:host='.$this->hostname.':'.$this->port.';dbname='.$this->database,$this->username,$this->password);
} catch (PDOException $e) {
echo 'Failed to get DB handle: '.$e->getMessage().'<br/>';
exit;
}
上面的代码在我的 MyPDO class 构造函数中,因此当我实例化我的 class 时,它连接 $pdo = new MyPDO();
.
我的代码的结果
问题是我收到此错误作为输出:
Failed to get DB handle: SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
非常感谢任何解决此问题的帮助!
仔细检查您的 php.ini 并确认您有行:
extension=php_sqlsrv_56_nts.dll extension=php_pdo_sqlsrv_56_nts.dll
仅限 PDO php_pdo_sqlsrv_56_nts.dll 是强制性的。
- 在 PDO 驱动程序部分的 phpinfo() 中,您应该有:sqlsrv
使用PDO_SQLSRV DSN而不是odbc,例如:
$this->pdo = new PDO( "sqlsrv:server=$hostname,$port;Database=$dbname", $username, $password);
或者如果您有完整的数据源名称(例如 localhost\SQLEXPRESS)
$this->pdo = new PDO( "sqlsrv:server=$serverName;Database=$dbname", $username, $password);
如果您收到 找不到驱动程序 异常,这意味着没有加载 sqlsrv 扩展。