windows系统IIS下php.X连接并启用sqlserver扩展(php_sqlsrv)

[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!

1、测试服务器信息,测试代码如下:

打开用phpinfo();查看php版本信息。如下

<?php
echo phpinfo();
?>

也可以用站内的雅黑探针来探测一下 支持PHP7.X探针-雅黑7.XPHP探针-PHP7雅黑探针(含下载)用雅黑探针也可以弹出使用的版本;

第二步下载:sqlserver扩展

这里我使用的php7.2版本,sqlserver扩展的下载链接:https://github.com/Microsoft/msphpsql/releases

官方sqlserver扩展下载链接:https://www.microsoft.com/en-us/download/details.aspx?id=20098

5.x版本的sqlserver扩展下载链接:链接:https://pan.baidu.com/s/1bkkArys7xBaJ9GUc9aDf9g  提取码:b6yo

PS:注意下载sqlserver扩展是32位和64位不是根据电脑的系统的位数判断的,而是根据php的位数判断的。如上图的第一个红框。

第三步:安装并配置sqlserver扩展

     找到phpinfo()中使用的php版本。如D:\phpStudy\PHPTutorial\php\php-7.2.1-nts\ext,然后把我们下载的sqlserver的扩展复制在这里。如图所示:

找到php.ini。如图所示

复制扩展需要的文件到PHP扩展目录。(例如我这里使用的是:extension=php_pdo_sqlsrv_72_nts.dll 和  extension=php_sqlsrv_72_nts.dll

修改php.ini添加以下两行来启用扩展:

extension=php_pdo_sqlsrv_72_nts.dll
extension=php_sqlsrv_72_nts.dll

第四步:下载 ODBC Driver

PS:注意这里的x86与x64是根据电脑系统判断的,不是根据php版本

Microsoft® ODBC Driver 11 for SQL Server® - Windows (支持Sql Server® 2005)  https://www.microsoft.com/zh-CN/download/details.aspx?id=36434

Microsoft® ODBC Driver 13 for SQL Server® - Windows + Linux (支持最新的SQL Server® 2016)  https://www.microsoft.com/zh-CN/download/details.aspx?id=50420

这里安装,只需要下一步下一步即可完成安装...

建议 安装ODBC Driver,根据自己的需要选择上面的地址下载并安装。

如果上面的ODBC版本太高,那么用这个低一点的 ODBC Driver 本站有下载 https://pan.baidu.com/s/1bkkArys7xBaJ9GUc9aDf9g  提取码:b6yo

现在可以使用phpinfo() 来查看是否成功加载了 pdo_sqlsrv 模块。

PS:延伸阅读:

PHP5.4连接sqlserver

1.下载微软的php连接驱动:SQLSRV30.EXE(5.4对应,后面的native client要用2012)/SQLSRV20.EXE(5.3对应,native client要用2008)/SQLSERV31.EXE对应5.5

2.解压SQLSERV30.EXE,拷贝对应extension到php的ext目录

3.配置php.ini

extension=php_sqlsrv_54_ts.dll(54为5.4版本,ts为线程安全,nts为非线程安全,带pdo的是用pdo方式连接,sqlsrvxx.exe里都有)

mssql.secure_connection = Off改为on 很多教程没写这个

4.重启IIS/Apache

5.在sqlserver服务器配置TCP/IP连接

6.在php服务器下载安装sqlserver native client(win8下装上这玩意http://www.microsoft.com/en-us/download/details.aspx?id=20098)

测试代码

连接sqlserver

 前提是sqlserver可以外网连接。

$conn = sqlsrv_connect('localhost', array('Database' => 'test', 'UID' => 'sa' , 'PWD' => '123456'));

if( $conn == false){
  var_dump(sqlsrv_errors());exit;
}

$sql = "SELECT * FROM users";

$result = @sqlsrv_query($conn, $sql);
while ( $re = @sqlsrv_fetch_array($result)) { 
  var_dump($re);
}

host一般是ip+端口,如ip,1433 。ip与端口之间用,隔开

$database = "数据库名称";
$uid = "sa";
$pwd = "123";
$Server = "192.168.0.152";
$conInfo=array('Database'=>$database,'UID'=>$uid,'PWD'=>$pwd);
$link=sqlsrv_connect($Server,$conInfo);

if( $link ){
// echo "Connection established.\n";
$query = 'SELECT * FROM T_Sys_UserInfo';

/* Set parameter values. */
$params = array(75123, 5, 741, 1, 818.70, 0.00);

/* Prepare and execute the query. */
$stmt = sqlsrv_query( $link, $query, $params);
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
echo $row['UseName'].", ".$row['RealName']."\n";
}

}
else{
//echo "Connection could not be established. ";
print_r( sqlsrv_errors(), true);
if( ($errors = sqlsrv_errors() ) != null) {
foreach( $errors as $error ) {
echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
echo "code: ".$error[ 'code']."<br />";
echo "message: ".$error[ 'message']."<br />";
}
}
die("");
}

PDO方式连接:

<?php
header("Content-Type: text/html;charset=utf-8");

class mssql{
private $host;
private $username;
private $password;
private $database;
private $handle;
private function __construct (Array $config){
$this -> host = $config['host'];
$this -> username = $config['username'];
$this -> password = $config['password'];
$this -> database = $config['database'];
$this -> init();
}
private function init() {
$dsn = 'sqlsrv:server = '.$this -> host.';database = '.$this->database;
$this -> handle = new PDO($dsn,$this -> username, $this -> password);
}
public static function GetInstance(array $config = null) {
if (null == $config) {
return NULL;
}
static $db = null;
if (null == $db) {
$c = __CLASS__;
$db = new $c($config);
};
return $db -> handle;
}
}

$config = array(
'host' => '192.168.0.152,1433',
'database' => '数据库名称',
'username' => 'sa',
'password' => '123'
);
$mssql = mssql::GetInstance($config);
$result = $mssql->query('SELECT * FROM T_Sys_UserInfo');
foreach($result as $row){
echo $row[2];
}
?>

 

问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

支付宝赞助
微信赞助

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如您下载该资源,行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源
LaoLiang.Net部分资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
意在交流学习,欢迎赞赏评论,如有谬误,请联系指正;转载请注明出处: » windows系统IIS下php.X连接并启用sqlserver扩展(php_sqlsrv)

发表回复

本站承接,网站推广(SEM,SEO);软件安装与调试;服务器或网络推荐及配置;APP开发与维护;网站开发修改及维护; 各财务软件安装调试及注册服务(金蝶,用友,管家婆,速达,星宇等);同时也有客户管理系统,人力资源,超市POS,医药管理等;

立即查看 了解详情