作者:ANANREMEMBERO38_810 | 来源:互联网 | 2014-05-28 16:07
安装好xampp后,如果你的php需要访问mssqlserver数据库,就需要这个步骤,否则会出错:Fatalerror:Calltoundefinedfunctionsqlsrv_connect()inD:\appServwindows系统下,PHP5.3以上的版本已经不支持mssql扩展,所以如果你需要和sqlse
安装好xampp后,如果你的php需要访问ms sqlserver数据库,就需要这个步骤,否则会出错:
Fatal error: Call to undefined function sqlsrv_connect() in D:\appServ
windows系统下,PHP5.3以上的版本已经不支持mssql扩展,所以如果你需要和sql
server通信需要到http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx自行下载微软提供的The
SQL Server Driver for PHP。
下载后解压缩,将所有的.dll文件拷贝到php安装目录的ext文件夹中,接下来打开php.ini,添加以下语句打开php_sqlsrv和php_pdo_sqlsrv扩展:
——————————————————?
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_ts.dll
[PHP_SQLSRV]
extension=php_sqlsrv_54_ts.dll
—————————————————
这里的54表示的是php5.4,如果你的是5.3版,就改成53,如果你的PHP版本是线程安全的,那么你的PHP安装目录下应该有一个php5ts.dll,与这里的两行语句对应,如果是php5nts.dll,那么上面的语句应该是:
—————————————————————-
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_nts.dll
[PHP_SQLSRV]
extension=php_sqlsrv_54_nts.dll
—————————————————-
重启后,如果出现了这个错误:
PHP Startup sqlsrv Unable to initialize module
则表明你的php.ini中配置的dll版本、ext中放的dll版本和实际php的版本不一致。查看当前php版本的方法是:http://localhost:port/,查看php状态。
重启后上述错误不再出现,但是qlsrv_connect($Server,$conInfo); 却总是运行不过,打出错误信息:
$cOnInfo=array('Database'=>$database,'UID'=>$uid,'PWD'=>$pwd);
$link=sqlsrv_connect($Server,$conInfo);
if( $link ){
// echo "Connection established.\n";
}
else{
//echo "Connection could not be established. ";
print_r( sqlsrv_errors(), true);
if( ($errors = sqlsrv_errors() ) != null) {
foreach( $errors as $error ) {
echo "SQLSTATE: ".$error[ 'SQLSTATE']."
";
echo "code: ".$error[ 'code']."
";
echo "message: ".$error[ 'message']."
";
}
}
die("");
}
这一次看到问题所在了:
SQLSTATE: IMSSP
code: -49
message: This
extension requires the Microsoft SQL Server 2012 Native
Client...
下载Microsoft SQL Server 2012 Native Client进行安装。
这下就ok了。
最后有点疑惑:
我的sql server装的本来是2008版的,为什么需要Microsoft SQL Server 2012 Native
Client?