设为首页 收藏本站
查看: 1543|回复: 0

[经验分享] 使用php来访问操作sql server

[复制链接]

尚未签到

发表于 2017-7-1 18:27:18 | 显示全部楼层 |阅读模式
使用php来访问操作sql server
  在此分成三步走:
  第一部:查看配置,下载文件
  首先查看自己的php和sql server版本
  Php文件输入echo PHP_VERSION  运行脚本就可以看到
  如果是php7,则搭配sql server2016 ,即若你的php版本是7那么sql server必须是2016
  其余的根据以下信息来搭配
  SQLSRV 的版本与php的关系
  Version 4.0 supports PHP 7.0+
  Version 3.2 supports PHP 5.6, 5.5, and 5.4
  Version 3.1 supports PHP 5.5 and 5.4
  Version 3.0 supports PHP 5.4.
  SQLSRV 与ODBC driver for server的关系
  Version 4.0     ODBC Driver 11 或者 ODBC Driver 13.
  Versions 3.2/ 3.1     ODBC Driver 11.
  Version 3.0       Microsoft SQL Server 2012 Native Client x86. (若为php5.4建议使用version3.1或3.2)
  ODBC driver for server 与sql server版本的关系
  ODBC driver 11  支持Microsoft SQL Server 2005, 2008, 2008 R2, SQL Server 2012, SQL Server 2014 and Windows Azure SQL Database
  ODBC driver 13 支持 Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016 (Preview), Analytics Platform System, Azure SQL Database and Azure SQL Data Warehouse.
  比如我的是sql server 2008 R2 和php5.5
  选择可以选择的SQLSRV为3.1或3.2版本,对应的ODBC driver时ODBC driver11,ODBC drive11 支持的sql server中有sql server 2008 R2,所以最后选择的是ODBC driver 11 和SQLSRV3.1或3.2
  今天徒弟的机子上的环境是sql server 2016 和php7
  所以选择的是ODBC driver 13 和SQLSRV4.0
  选好后下载相应的文件,下载地址如下:
ODBC Driver 11 for sql server  下载地址https://www.microsoft.com/en-us/download/details.aspx?id=36434

ODBC Driver 13 for sql server下载地址https://www.microsoft.com/en-us/download/details.aspx?id=50420

SQLSRV 下载地址https://www.microsoft.com/en-us/download/details.aspx?id=20098


第二步:安装PHP扩展

新建一个php文件输入<?php  phpinfo() ;   ?>在浏览器里运行php文件,找到PHP Extension Build选项

DSC0000.png

可以看到它的值里有TS或者NTS,记录下来

查看php扩展路径打开php安装目录下的php.ini 文件搜索extension_dir

查看它的值如下

DSC0001.png


双击下载下来的SQLSRV文件,

随便解压到一个路径下,解压后打开目录,选择里面的

php_pdo_sqlsrv_55_ts.dll和

  php_sqlsrv_55_ts.dll两个文件,其中的55是php版本号5.5   ,ts是PHP Extension Build选项里得出的,我本地环境是TS,如果你的是NTS 则选择的是NTS文件
  把选中的两个文件复制到php扩展路径下,如C://xampp/php/ext
  在php.ini文件里加上如下两行
DSC0002.png

  其实就是你刚才复制的两个文件,其中的数字55 和ts可能有所不同
  保存配置文件,重启服务器apache,运行刚才的脚本看是否有PDO_SQLSRV
  如下:
DSC0003.png

  若有那么恭喜你成功了第二步
  第三步:安装驱动器,设置sql server
  双击安装下载下来的ODBC driver文件,安装完成后设置sql server
  打开sql server management studio 使用sql server的用户名和密码登录
DSC0004.png

  若不能登录则使用windows系统登录,对着服务器名右键->属性->安全性,选中”sql server和windows身份验证模式”
DSC0005.png

  保存,
  点击安全性->登录名 对着用户名(sa)右键->属性->常规  更改密码,状态里选择授予和登录
DSC0006.png

  保存编辑
  重启sql server服务看是否可以用账号密码登录,只到可以登录未止。
  打开SQL SERVE R配置管理工具:
  点击sql server网络配置协议在右侧启动TCP/IP,对TCP/IP右键->启动,右键->属性->IP地址,在最下方的IPALL 里的TCP发端口改为1433
DSC0007.png

  保存,同时对客户端协议做同样的操作,重启sql server服务
  到此第三步完成
  测试:新建PHP文件,输入如下代码:
  <?php
class sql{
private $serverName = "LXBDELL\SQLEXPRESS";  //sql server链接实例名
private  $connectionInfo = array("UID"=>"sa","PWD"=>"lxb106170","Database"=>"test"); //配置用户名,密码,数据库
public $sql = "SELECT Name FROM Master..SysDatabases ORDER BY Name";  //默认的sql语句
public $result;
public $conn = '';

public function __construct( $name ='' , $user ='' , $pwd ='' ,$db = '' ){
if( $name ){
$this->serverName = $name;
}
if( $user ){
$this->connection['UID'] = $user;
}
if( $pwd ){
$this->connection['PWD'] = $pwd;
}
if( $db ){
$this->connection['Database'] = $db;
}

//connect to sqlserver
if( !$this->conn ){
$this->conn = sqlsrv_connect( $this->serverName, $this->connectionInfo)
or die( sqlsrv_errors() );
}
}

public function doQuery( $sql ){
if(!$this->conn){
return " sorry ,can't to link server" ;
}
if( $sql ){
$this->sql = $sql ;
}
$this->result = sqlsrv_query($this->conn,$this->sql) ;
return $this->result;
}

public function close(){
if($this->conn){
sqlsrv_close ( $this->conn ) ;
}
}
}
//phpinfo();
  
$server = new sql();
$sql = "select * from [user] "; //sql语句写在这
$result = $server->doQuery( $sql );  //查询返回的句柄
$output = '';
if ( ! is_string( $result )){
while ( $re = sqlsrv_fetch_array ( $result )){   //sqlsrv_fetch_array 通过查询结果句柄获取查询结果
//$output[] = $re; //打印查询结果
var_dump( $re ) ;
}
}else{
echo $result;
}
  ?>
  替换其中的serverName ,UID ,PWD ,Database
  ServerName是sql server的实例名,UID是登录名,PWD是密码.运行脚本可以知道是否链接成功
  已经从sql server数据库里读出数据了
二〇一六年十二月二十日星期二

梁小兵        


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390135-1-1.html 上篇帖子: docker4dotnet #5 使用VSTS/TFS搭建基于容器的持续交付管道 下篇帖子: 如何将已部署在ASM的资源迁移到ARM中
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表