PHP 8.0 连接 MS SQL Server
手欠,把php 7.4升级到了8.0,结果连接不上sql server了,当然是最新的驱动不匹配了,折腾了半天,终于找对版本了。
驱动下载网址:
微软(适用于php7.2~7.4)
https://docs.microsoft.com/zh-cn/sql/connect/php/support-resources-for-the-php-sql-driver?view=sql-server-ver15
https://docs.microsoft.com/zh-cn/sql/connect/php/step-1-configure-development-environment-for-php-development?view=sql-server-ver15
php扩展(适用于php8.0)
https://pecl.php.net/package/pdo_sqlsrv
https://pecl.php.net/package/pdo_sqlsrv/5.9.0/windows
https://pecl.php.net/package/sqlsrv/5.9.0/windows
方法就很简单了,
1、把两个dll,拷贝到php的ext目录下,
2、编辑php.ini
在这段后面
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
加上这两行
extension=php_pdo_sqlsrv.dll
extension=php_sqlsrv.dll
在php.ini文件最后,可以加上这几行
[MSSQL]
mssql.allow_persistent=On
mssql.max_persistent=-1
mssql.max_links=-1
mssql.min_error_severity=10
mssql.min_message_severity=10
mssql.compatability_mode=Off
mssql.secure_connection=Off
3、重启apache后测试连接
<?php
$database = "master";
$uid = "sa";
$pwd = "MyPass#SQL2019";
$Server = "192.168.1.108";
$conInfo=array('Database'=>$database,'UID'=>$uid,'PWD'=>$pwd);
$conn=sqlsrv_connect($Server,$conInfo);
if( $conn ){
$query = 'SELECT * FROM sysusers';
$stmt = sqlsrv_query( $conn, $query);
while( $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
echo "<span>".$row['name']."<br></span>";
}
}
else{
print_r( sqlsrv_errors(), true);
if( ($errors = sqlsrv_errors() ) != null) {
foreach( $errors as $error ) {
echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
echo "code: ".$error[ 'code']."<br />";
echo "message: ".$error[ 'message']."<br />";
}
}
die("");
}
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>