树莓派3下PDO访问MSSQL

来源:互联网 发布:tftp 使用端口 编辑:程序博客网 时间:2024/06/04 01:28


手头的树莓派3已经装了LAMP,也做成功了用python借助FreeTDS访问MSSQL的实验,然后想测试下用PHP脚本直接访问MSSQL。

查阅了一些资料,发现可以用php5-sybase实现。你没看错,就是sybase。在MS SQL SERVER的发展历史中,微软最初就是和Sybase合作的,因此这是可以理解的。这就很简单了,sudo apt-get install php5-sybase。完了以后重启apache服务,或者干脆简单粗暴的重启树莓派。

重启后用phpinfo();测一下,应该能出来关于mssql的内容,PDO drivers 里也应该包含 dblib。

做到这里已经可以做测试了。以下是示例:
$db = new PDO("dblib:host=MSSQL服务器:1433;dbname=数据库名;","用户名","密码");
不报错就对了。

但这样有个严重问题,我的SQLSERVER是简体中文版的,使用默认的字符集安装,此时php返回查询结果的中文会乱码,即便respi-config里面把四个zh_cn开头的字符集都装过。综合测试了网上的几种说法,目前我的解决方案是使用iconv函数。

<?php//ini_set('display_errors','On'); #如果有错,展示详细错$db = new PDO("dblib:host=192.168.199.180:1433;dbname=demo;","sa","这是一坨马赛克");$sql = "select * from t_demo";foreach ($db->query($sql) as $rows){        //$f1 = $rows[1]; // 中文乱码        $f1 = iconv('GBK', 'UTF-8//IGNORE', $rows[1]);        print_r($f1);}$db = null;?>

按网上的其他说法,连接字符串里加charset=GBK,freetds的配置文件里的[global]中加一句client charset = GBK 等等,但目前我都没用倒是也行。先记一下,也许哪个特定情况下有用。



0 0
原创粉丝点击