MS SQL Server 2014上的PHP v5.6 PDO 问题
我目前无法使用PHP中的PDO连接到我的数据库MS SQL Server 2014上的PHP v5.6 PDO 问题,php,sql-server,pdo,php-5.6,Php,Sql Server,Pdo,Php 5.6,我目前无法使用PHP中的PDO连接到我的数据库 规格 PHP版本5.6.9 数据库:2008 R2上的Microsoft SQL Server 2014 来自phpinfo():PDO驱动程序:mysql、odbc、sqlite 使用iis6.1 我试过的 我刚刚将驱动程序安装在Microsoft的SQLSRV32.exe文件中(从以下链接:)到我的PHP extensions文件夹,但是我似乎仍然无法连接到我的数据库。(是的,我重新启动了IIS) 我可以使用旧的连接方法获得连接 我的
规格
- PHP版本5.6.9
- 数据库:2008 R2上的Microsoft SQL Server 2014
- 来自phpinfo():PDO驱动程序:mysql、odbc、sqlite
- 使用iis6.1
我试过的 我刚刚将驱动程序安装在Microsoft的SQLSRV32.exe文件中(从以下链接:)到我的PHP extensions文件夹,但是我似乎仍然无法连接到我的数据库。(是的,我重新启动了IIS) 我可以使用旧的连接方法获得连接
我的代码 我当前用于PDO连接的PHP代码如下:
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;
}
试试看{
$this->pdo=new-pdo('odbc:host='.$this->hostname'.:'.$this->port';dbname='.$this->database,$this->username,$this->password);
}捕获(PDO$e){
echo“无法获取数据库句柄:”。$e->getMessage()。
;
出口
}
上面的代码在我的MyPDO类构造函数中,因此当我实例化我的类时,它是连接的代码>
我的代码的结果 问题是我将此错误作为输出:
未能获取数据库句柄:SQLSTATE[IM002]SQLDriverConnect:0[Microsoft][ODBC驱动程序管理器]未找到数据源名称,且未指定默认驱动程序
非常感谢您对解决此问题的任何帮助
extension=php_sqlsrv_56_nts.dll
extension=php_pdo_sqlsrv_56_nts.dll
仅适用于PDOphp_PDO_sqlsrv_56_nts.dll是必需的$this->pdo = new PDO( "sqlsrv:server=$hostname,$port;Database=$dbname", $username, $password);
或者如果您有完整的数据源名称(例如localhost\SQLEXPRESS)
如果您收到找不到驱动程序异常,则表示未加载sqlsrv扩展。看起来您无意中将用户名和密码连接到dsn(作为数据库名的一部分)中,而不是将其作为附加参数传入;它可能是:
newpdo('odbc:host='.$this->hostname'.:'.$this->port';dbname='.$this->database,$this->username,$this->password)代码>对不起,我用正确的代码更新了我的帖子。我仍然在经历这个问题OK,一个基本的问题,你想使用ODBC吗?如果是,您是否定义了此DSN?(我从Windows 2000开始就没有这样做过,但以前有一个控制面板来定义它们。一个选项卡用于用户特定的选项卡,另一个选项卡用于系统范围的选项卡。)一旦定义完成:new PDO(“odbc:dsn_name”,$user,$pass)代码>这对我有用。非常感谢你。我在php.ini文件中缺少extension=php_pdo_sqlsrv_56_nts.dll
,并使用完整的数据源名称将我的pdo调用更改为您的第二个代码块
$this->pdo = new PDO( "sqlsrv:server=$serverName;Database=$dbname", $username, $password);