PHP连接SQLServer数据库的两个大坑

2016-04-26 19:43小小哆PHPDev评论(0)

前几天,朋友让我帮他写个小项目,也挺简单的,就是对数据库进行增删改查而已,但却浪费了我半天时间。

因为没试过用PHP连接SQLServer,百度查了下,PHP5.3版本需要上微软官网下载SQLServer的PHP Driver程序。下载后,解包后将对于版本放在php目录的ext文件夹中,然后编辑php.ini把dll文件加到extension,让Apache启动进行加载。

extension=php_pdo_sqlsrv_53_ts_vc9.dll
extension=php_sqlsrv_53_ts_vc9.dll

接着打开(重启)Apache,配置数据库连接信息,然后连接会提示要安装“SQL Server Native Client”。

坑一

因为我朋友给个数据库信息带有端口号,照以前的经验是192.168.1.1:8585,而万万没想到。。。

SQLServer居然不是用冒号,而是用逗号:192.168.1.1,8585

这个大坑浪费了我几个小时,心塞!!

附上PHP下SQLServer数据库连接代码:

// 数据库主机(格式:IP,端口)
$serverName = "";
// 数据库用户名
$uid = "sa";
// 数据库密码
$pwd = "";
// 数据库名
$db  = "";
 
$connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>$db);
 
$conn = sqlsrv_connect($serverName, $connectionInfo);
 
if ($conn == false) {
    echo "数据库连接失败!";
    die(var_dump( sqlsrv_errors(), true));
    exit();
}

坑二

数据库配置完毕后,用SQL语句“SELECT * FORM [XXXX]”确实可以查询到数据。

结果加上搜索条件,就总是返回空。

又折腾了半个钟,才发现,原来向SQLServer数据库发送查询语句中如果带有中文,需先转码成GBK。

又心塞了。转码方法如下(详见):

$sql = mb_convert_encoding($sql, 'gbk', 'utf-8');
上一篇 Mac上好用的抓包工具——Charles的使用教程在Ubuntu中搭建ss服务端 下一篇
评论 0
由于之前使用多说插件出现问题,导致以前的评论丢失,在此深表歉意!

站点统计

  • 建站日期:2014-12-06
  • 最后更新:2016-04-26
  • 运行时间:1474 天
  • 文章数量:46 篇