win10系统php配置连接sql server最全教程(解决中文乱码问题)

1,查看phpinfo()

php版本:7.0,nts,x86

win10系统php配置连接sql server最全教程(解决中文乱码问题)_第1张图片

2,安装sqlserver扩展

打开链接https://www.microsoft.com/en-us/download/details.aspx?id=20098,点击Download,选择SQLSRV40.EXE下载

win10系统php配置连接sql server最全教程(解决中文乱码问题)_第2张图片

下载后的SQLSRV40.EXE解压得到

win10系统php配置连接sql server最全教程(解决中文乱码问题)_第3张图片

3,根据php版本选择对应的扩展

php版本为7.0,nts,x86,所以选择了如下两个文件复制到对应的php的ext文件夹中

win10系统php配置连接sql server最全教程(解决中文乱码问题)_第4张图片

 

4,修改php.ini

添加代码引入扩展

extension=php_pdo_sqlsrv_7_nts_x86.dll
extension=php_sqlsrv_7_nts_x86.dll

5,重启服务器查看phpinfo()是否引入sqlsrv和pdo_sqlsrv

6,安装msodbcsql.msi

下载地址https://www.microsoft.com/en-us/download/details.aspx?id=50420根据电脑系统选择对应版本

win10系统php配置连接sql server最全教程(解决中文乱码问题)_第5张图片

下载后一直下一步默认安装即可。

7,sql server中创建一个表并插入数据

创建表如何用SQL Server创建数据表

插入数据SQL Server插入数据和删除数据

8,php连接sqlserver

可参考官方提供的例子如何:使用 Windows 身份验证进行连接以及如何:使用 SQL Server 身份验证进行连接

1,第一种连接方式

"test","CharacterSet" => "UTF-8");  
$conn = sqlsrv_connect( $serverName, $connectionInfo); 
if( $conn === false )  
{  
     echo "Unable to connect.
"; die( print_r( sqlsrv_errors(), true)); }else{ echo "连接成功.
"; $sql = "select * from table_1"; $result = sqlsrv_query($conn, $sql); while ( $re = sqlsrv_fetch_array($result)) { // $re = iconv('GBK','UTF-8',$re[0]); //只能转字符串 print_r($re); } }

2,第二种连接方式使用 PDO_SQLSRV 驱动连接

setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
}  
  
catch( PDOException $e ) {  
   die( "Error connecting to SQL Server. 
" ); } echo "Connected to SQL Server.
"; $query = 'select * from table_1'; $stmt = $conn->query( $query ); while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){ print_r( $row ); }

9,解决数据库中的中文数据在页面显示乱码的问题

1)使用第二种pdo_sqlsrv驱动的方式中文显示正常

2)使用第一种连接方式方式:

如果设置header('Content-Type:text/html; charset=utf-8;'); 输出数据库中的中文正常,但是php中输出的输出的中文字符(比如echo)就成了乱码,所以该方法行不通;

按照网上其他说法修改数据库中字段类型为navchar也没有效果(第一次修改字段会被阻止保存要求创建表的修改请参考SQL Server 2008|2012 阻止保存要求重新创建表的更改)

有效的解决方式:

在连接的$connectionInfo中设置"CharacterSet" => "UTF-8",指定编码方式即可

 

你可能感兴趣的:(后端,php连接sqlserve)