我正在处理的服务器运行的是PHP 5.5,它安装了FreeTDS dblib。
php -v
返回;
PHP 5.5.0-dev (cli) (built: Oct 23 2012 15:41:58)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
构建就是这样;
Configure Command => './configure' '--with-apxs2=/usr/bin/apxs2' '--enable-track-vars' '--with-mssql' '--with-png-dir=/usr' '--with-jpeg-dir=/usr' '--with-zlib-dir=/usr' '--enable-ftp' '--with-gd' '--enable-freetype-4bit-antialias-hack' '--with-config-file-path=/etc' '--enable-calendar' '--with-curl' '--with-curlwrappers' '--enable-exif' '--with-mysql' '--with-ldap' '--with-freetype-dir=/usr' '--enable-sockets' '--with-pdo-mysql' '--enable-soap' '--with-mcrypt' '--with-pdo-dblib' '--with-openssl' '--enable-sysvsem' '--enable-shmop' '--enable-pcntl' '--with-xsl'
我只是尝试使用以下内容连接到SQL Server框;
<?php $pdo = new PDO ('dblib:host=fqdn,port;dbname=db', 'usr', 'passwd'); ?>
输出如下;
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[] (null) (severity 0)' in /path/to/file.php:17 Stack trace: #0 /path/to/file.php(17): PDO->__construct('dblib:host=fqdn...', 'usr', 'passwd') #1 {main} thrown in /path/to/file.php on line 1
我已经完成了相当多的搜索现有堆栈帖子,它们都与PHP自5.2 RCs或早期版本的FreeTDS的错误修复有关。考虑到这个服务器是5.5和更高版本的FreeTDS我想知道是否有人得到这个非常有用的空SQL状态错误消息的答案。
有趣的是,在guide to confirming your FreeTDS installation之后建议的命令无法为我运行。我将尝试重新安装FreeTDS。
答案 0 :(得分:5)
因此,它似乎是您连接的地方,从而影响端口的形式。
在基于Windows的服务器上使用PHP时,连接字符串应为;
<?php $pdo = new PDO ('dblib:host=fqdn,port;dbname=db', 'usr', 'passwd'); ?>
在基于Linux的服务器上使用PHP时,连接字符串应为;
<?php $pdo = new PDO ('dblib:host=fqdn:port;dbname=db', 'usr', 'passwd'); ?>
我假设fqdn / port差异是基于你的连接而不是FROM,情况。
尽管如此,这个系统的错误处理显然还没有多想!