当前位置:首页 > PHP > 正文内容

php7连接sqlserver2000

高老师5年前 (2021-07-18)PHP1783

安装扩展这部分直接看我的另外一篇文章,地址是:

https://blog.20230611.cn/?id=353

php连接sqlserver方式有4种:

pdo
sqlsrv_connect
odbc
com

前面两种方式会依赖微软给的驱动版本,也依赖于固定版本的sqlserver,例如sqlserver2000只能在php5.3版本使用。而com和odbc不用限制。

例如我的php7.3连接sqlserver2000的代码:

// 连接SQL
$sql = iconv('UTF-8', 'GBK', $sql);;
$dsn = "Driver={SQL Server};Server={$config['host']};Database={$config['name']};trusted_connection=Yes";
$conn = odbc_connect($dsn, $config['user'], $config['pass'], SQL_CUR_USE_ODBC);
if (!$conn)
{
    throw new Exception('连接SQL服务器失败');
}

// 执行SQL
$result = odbc_exec($conn, $sql);
if (!$result)
{
    throw new Exception('SQL执行失败:' . odbc_error());
}

// 提取结果
$responseData = [];
while (true)
{
    $row = (odbc_fetch_array($result));
    if (!$row)
    {
        break;
    }
    $keys = array_keys($row);
    foreach ($keys as $key)
    {
        $row[$key] = iconv('GBK', 'UTF-8', $row[$key]);
    }
    $responseData[] = $row;
}
odbc_close($conn);

return $responseData;

当然也可以使用com连接,具体代码自己搜索,开启com_dotnet.dll即可

$dbConn=new COM ("ADODB.Connection")

com连接的代码和asp是完全一致的,如果你写过asp,看一下绝对完全一致。

要处理编码问题,传递给sqlserver的sql自己转gbk编码,sqlserver返回结果你再转换回utf8即可。

浪费了一天半的时间研究这个东西真不划算,大部分时间卡在了编码问题,还以为是不支持,还好帮朋友解决了问题。

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/208.html

分享给朋友:

“php7连接sqlserver2000” 的相关文章

php创建webservice,php搭建webservice,php编写webservice

php创建webservice,php搭建webservice,php编写webservice

第一步:服务端文件<?php $wsdlfile='webservice.wsdl'; ini_set('soap.wsdl_cache_enabled','0');    //关闭WSDL缓存 //001...

php限制方法返回值类型

php限制方法返回值类型

php7新增的特性(1).强制限制只能返回一种类型<?php class task { } //must return an integer function add(): int {    &nb...

PHP最快方式模拟curl,PHP最快爬虫模拟方法

PHP最快方式模拟curl,PHP最快爬虫模拟方法

有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...

php redis事务

php redis事务

概念请参考w3school文章: redis watch ,redis exec (看完基本秒懂)(1)基本事务://连接本地的 Redis 服务 $redis = new Redis(); $redis->con...

php通过event扩展创建定时器,php毫秒级定时器

php通过event扩展创建定时器,php毫秒级定时器

PHP简单定时器可以通过pcntl_signal创建闹钟信号来实现。但是缺点很明显,性能一般,要自己实现守护进程,不支持毫秒级定时器,单进程不支持多个闹钟信号,不能跨平台运行event扩展支持的事件多,性能高。<?php //创建event配置.[空配置] $eventConfig ...

php位运算符详解

php位运算符详解

文章篇幅较长,如果不喜欢看文章的,此处抛出韩顺丰老师的位运算视频,韩老师应该是全网讲php位运算符最详细的一个老师了。链接:https://pan.baidu.com/s/14xj7er8eVSUcJ-jYXyA0GA  提取码:731m 链接:https://pan.baidu.com...