php连接sql server 2008

       为了这个我今天折腾了一整天,原因是网上百度使用laravel 连接Sqlserver而走进误区,没有班sqlserver  php 和laravel的版本问题考虑进去。

        现在开始解决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.4 和 5.5 和 5.6

Version 3.1 supports PHP 5.5 和 5.4

Version 3.0 supports PHP 5.4


SQLSRV 与ODBC driver for server的关系


Version 4.0 ODBC Driver 11或者 ODBC Driver 13.

Version 3.2/3.1   ODBC Driver 11.


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,2008 R2, 2012,2014,2016(Preview)


比如我的是sql server R2 和php 5.5


选择SQLSRV为3.1或者3.2版本,对应的ODBC driver11,支持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选项

 

 

 

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

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

查看它的值如下

 

 

双击下载下来的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文件里加上如下两行

 

其实就是你刚才复制的两个文件,其中的数字55 和ts可能有所不同

保存配置文件,重启服务器apache,运行刚才的脚本看是否有PDO_SQLSRV

如下:

 

 

若有那么恭喜你成功了第二步


第三步:安装驱动器,设置sql server

双击安装下载下来的ODBC driver文件,安装完成后设置sql server

打开sql server management studio 使用sql server的用户名和密码登录

 

 

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

 

 

保存,

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

 

 

 

保存编辑

重启sql server服务看是否可以用账号密码登录,只到可以登录未止。

 

打开SQL SERVE R配置管理工具:

点击sql server网络配置协议在右侧启动TCP/IP,对TCP/IP右键->启动,右键->属性->IP地址,在最下方的IPALL 里的TCP发端口改为1433

 

 

 

保存,同时对客户端协议做同样的操作,重启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数据库里读出数据了


相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页