树莓派3下PDO访问MSSQL

手头的树莓派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函数。

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值