【发布时间】:2016-09-15 05:22:30
【问题描述】:
问题
我目前无法在 PHP 中使用 PDO 连接到我的数据库。
规格
- PHP 版本 5.6.9
- 数据库:Microsoft SQL Server 2014 on 2008 R2
- 来自 phpinfo():PDO 驱动程序:mysql、odbc、sqlite
- 使用 IIS 6.1
我尝试过的
我刚刚将 Microsoft 的 SQLSRV32.exe 文件中的驱动程序(来自此链接:https://www.microsoft.com/en-us/download/details.aspx?id=20098)安装到我的 PHP 扩展文件夹中,但是我似乎仍然无法连接到我的数据库。 (是的,我重新启动了 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;
}
上面的代码在我的 MyPDO 类构造函数中,所以当我实例化我的类时,它连接到$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
非常感谢任何解决此问题的帮助!
【问题讨论】:
-
看起来您无意中将用户名和密码连接到 dsn(作为 dbname 的一部分),而不是将它们作为附加参数传递;应该是:
new PDO('odbc:host='.$this->hostname.':'.$this->port.';dbname='.$this->database, $this->username, $this->password); -
抱歉,我用正确的代码更新了我的帖子。我仍然遇到这个问题
-
好的,基本问题,你想使用ODBC吗?如果是这样,您是否定义了此 DSN? (自 Windows 2000 天以来我没有这样做过,但曾经有一个用于定义它们的控制面板。一个选项卡用于特定于用户的选项卡,另一个选项卡用于系统范围的选项卡。)一旦定义you want to do something like this:@ 987654327@
标签: php sql-server pdo php-5.6