PHP连接SQLSERVER及中文乱码问题

摘要:
PHP连接SQLSERVER1、PHP 5.3和更高版本不再支持mssql模块。应使用SQLSRV或PDO _ SQLSRV2.下载PHP驱动程序。Id=36434下载msodbcsql-Msi安装。PHP与SQLSERVER的连接在中文中乱码。1.如果SQL语句中有中文,则查询失败;2.查询结果将显示中文乱码。

PHP连接SQLSERVER

1、PHP 5.3及以后版本不再支持mssql模块,应使用SQLSRV或PDO_SQLSRV;

2、下载 PHP 驱动程序。 http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx 内含Windows平台各种版本扩展文件,支持SQL2005及以上版本

3、复制所需文件如:php_sqlsrv_73_nts_x64.dll (PHP7.3非线程安全64位版)到phpext 目录下,修改php.ini 添加扩展 extension=php_sqlsrv_73_nts_x64

如果提示ODBC问题

Connection failed: SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server.

是因为使用32位数据库,需要安装32位ODBC驱动(64位系统未安装)

https://www.microsoft.com/en-us/download/confirmation.aspx?id=36434

下载msodbcsql.msi安装即可。

PHP连接SQLSERVER中文乱码问题

1、SQL语句中有中文会导致查询失败;

2、查询结果有中文会显示乱码。

解决方法(较简单,建议使用):

1、PHP文件保存时选ANSI编码;

  附:VS Code 改变默认文字编码,File(文件)->Preferences(首选项)->Usersettings(设置),搜索encoding,将utf8改为gbk

2、PHP文件头加入

header("Content-Type: text/html; CHARSET=GBK");
解决方法(较麻烦):
 
1、PHP文件保持默认UTF-8编码;
2、查询前对SQL转码
$sql = "SELECT '是'='是'"; 
$sql=iconv('UTF-8','GBK',$sql);

3、查询结果对含中文列转码

$stmt = sqlsrv_query( $conn, $sql);

if($stmt){
    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
        echo iconv('GBK','UTF-8',$row[0])."<br />";
    }
}

免责声明:文章转载自《PHP连接SQLSERVER及中文乱码问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DataGridView合并单元格Jmeter接口压力测试(先登录再测接口)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

用sqlserver的sqlcmd、osql、isql的备份与还原

用sqlserver的sqlcmd、osql、isql的备份与还原 --sqlcmd ,sql2005新加工具1、备份"C:\Program Files\MicrosoftSQLServer\90\Tools\Binn\SQLCMD.EXE" -S .\sqlexpress -U sa -P 000000 -d master -Q"BACKUP DATAB...

转:通过 Visual Studio 对 SQL Server 中的存储过程设置断点并调试

‍执行会在断点处暂停,此时,我们可以查看并更改存储过程的参数值,逐步地调试其各条语句,就像我们在步骤1 中所做的那样。   在我们可以对应用程序调用的存储过程进行调试之前,首先要指示ASP.NET web 应用程序与SQL Server 调试器相集成。首先,在 Solution Explorer 中右键单击网站名称(ASPNET_Data_Tutorial...

php性能调优

第一章  针对系统调用过多的优化 我这次的优化针对syscall调用过多的问题,所以使用strace跟踪apache进行分析。 1.  apache2ctl -X & 使用-X(debug)参数启动httpd进程,这个时候只启动1个httpd进程 2. ps -ef | grep httpd 找到需要strace的pid 3. strace -p...

php实现SESSION跨域

稍微大一点的网站,通常都会有不只一个服务器,每个服务器运行着不同的功能模块或者不同的子系统,他们使用不同的二级域名,比如www.a.com、i.a.com、bbs.a.com。而一个整体性强的网站,用户系统是统一的,即一套用户名、密码在整个网站的各个子系统中都是可以登录使用的。各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器...

CodeIgniter框架——nginx下的配置

odeigniter(CI)是一个轻量型的PHP优秀框架,但是它是在apache服务器下开发的,在nginx下需要特别的配置才可以使用。 对nginx的配置如下: 1 server { 2 listen 80 default_server; 3 listen [::]:80 default_server ipv6only=on;...

PHP学习(类型转化)

   PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个 string 值赋给变量 $var,$var 就成了一个 string 。如果又把一个integer 赋给 $var,那它就成了一个integer 。     PHP 的自动类型转换的一个例子是加法运算符“+”。如果任何一个操作数是f...