项目环境是php5.3.28 项目用的ThinkPHP3.2.3 已经mysql5.5数据库,要和另外一个项目对接,须要链接sqlsever2000数据库进行一些操做。
第一种用php自带扩展链接数据库:
一、首先要下载
php_pdo_sqlsrv_53_ts_vc9.dll
php_sqlsrv_53_ts_vc9.dll
下载地址:http://share.weiyun.com/dc589fc41567ce6e3fb8b131ec1553ff
这两个文件
二、复制到PHP目录下的ext目录下
三、修改PHP目录下的php.ini文件:
在文件最后加上
extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
四、而后查找
mssql.secure_connection
把值改成on
保存php.ini文件
五、重启apache
php里面的链接数据代码
$model = new Model();
$conn=$model->db(1,"sqlsrv://登陆名称:密码@服务器host:1433/数据库名称");
$sql='select id,code from t_user';
$res=$conn->query($sql);
参考网址(转):http://www.cnblogs.com/phpyangbo/p/thinkphp-sqlserver-lianjie.html
我用这种方法遇到问题了,在我本地环境上面能够正常使用sqlserver数据库,
到了服务器上面能链接上数据库,但是执行不了sql,折腾了两天没找到什么问题而后就用第二种方法链接了
第二种 用ODBC链接sqlserver数据库
1.配置SQL Server ODBC数据源
个人系统是64位的,就得配64位的数据源
(1)运行C:\Windows\SysWOW64\odbcad32.exe
(2)在【ODBC数据源管理器】对话框中,单击【系统DNS】标签,单击【添加】按钮,弹出【建立新数据源】对话框
(3)在【建立新数据源】对话框中,在驱动程序序列表中选择【SQL Server】,单击【完成】按钮,弹出【建立到SQL Server的新数据源】对话框
(4)在【建立到SQL Server的新数据源】对话框中,在【名称(M)】文本框中输入数据源名称:(可本身自由命名,读取性好就行)php链接的时候会用到,
在【服务器(S)】文本框中选择服务器名为:要是链接本地的写local,链接远程的写远程服务器的ip,单击【下一步】按钮,进入【建立到SQL Server的新数据源】对话框
(5) 在【建立到SQL Server的新数据源】对话框中,选择【使用用户输入登录ID和密码的SQL Server验证(s)】单选按钮,在【登录ID(l)】文本框内输入SQL Server身份验证的登陆名:sa,
在【密码】文本框内输入设定的密码,单机【下一步】按钮,弹出【建立到SQL Server的新数据源】对话框
(6)在【建立到SQL Server的新数据源】对话框中,勾选【更改默认的数据库为】复选框,将默认的数据库选择为本身要链接的数据库,单击【下一步】按钮,弹出【建立到SQL Server的新数据源】对话框
(7)在【建立到SQL Server的新数据源】对话框中,采用默认设置。单击【完成】按钮,弹出【ODBC Microsoft SQL Server安装】对话框
(8)在【ODBC Microsoft SQL Server安装】对话框中,单击【测试数据源】按钮。链接成功会显示的,而后点肯定就好了,数据源就配好了。
2.php用数据源链接sqlserver数据库
(1)在 php.ini 中将 extension=php_pdo_odbc.dll 前的分号去掉,并重启 apache.
(2)php脚本链接代码
$servername="数据源的名称";
$conn=odbc_connect($servername,'数据库登陆名称','登陆密码',SQL_CUR_USE_ODBC);
$sql="SELECT * FROM user";
$result=odbc_exec($conn,$sql);
可参考(转):http://blog.sina.com.cn/s/blog_a07a3f180101dg4g.html
之前作项目没有链接过sqlserver数据库,第一次链接,折腾了三天才链接上,总结下经验,之后在连接的是不用处处找了php
补充:
PHP向sqlserver2000中写入数据,中文乱码
首先:查看SQLserver编码格式的SQL语句为:
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')
查询结果的含义:
936 简体中文GBK
950 繁体中文BIG5
437 美国/加拿大英语
932 日文
949 韩文
866 俄文
65001 unicode UFT-8
PHP使用UTF-8编码。SQL Server 2008使用默认的GBK编码。这样,向数据库写入中文是会出现乱码的。
解决办法:
在执行查询语句以前将查询语句及所要插入的数据转化为GBK编码。
$query = "INSERT INTO employees (employeeID, employeeName) VALUES ('$employeeID', '$employeeName')";
$query = iconv("utf-8", "gbk", $query);
html