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

php7连接sqlserver2000

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

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

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抽象类和接口作用

php抽象类和接口作用

【一】.抽象类假设如下场景:团队准备开发某网站,表建好了,页面设计好了.A组负责开发底层数据库操作类(DB),B组负责调用DB类.但是此时A组发生了争执,MySQL? Oracle? DB2? sqlite?到底使用什么数据库?B组.... 进入漫长的等待.解决方法:A组和B组 先定1个数据库类的模...

php解决浮点数精度问题

php解决浮点数精度问题

首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php   &n...

php finally使用

php finally使用

<?php /**  * @throws Exception  */ function curl() {     throw  new \Exception('err...

pcntl_signal(): Error assigning signal

pcntl_signal(): Error assigning signal

当我想在一个进程中监听kill 和 kill -9命令报了这个错误。//监听kill pcntl_signal(SIGTERM, function () {     posix_kill(0, SIGTERM); });...

composer自动加载类库(非psr4规范的文件)

composer自动加载类库(非psr4规范的文件)

在项目下的composer配置文件修改(PaySdk是我这里一个支付sdk的目录,包含各种各样的支付sdk,这样写的意思让composer自动把PaySdk下的所有文件自动加载):"autoload": {      &...

php端口复用,php socket端口复用

php端口复用,php socket端口复用

第一次听说端口复用是在mixphp最新版本中发现的,mixphp启动监听9501端口,现在作者说可以多开几个进程来执行mixphp,我心里想了下再启动不是会端口冲突嘛,但是却没有问题,于是下载mixphp的源码解读,原来是启动http服务器使用new Co\Http\Server('0.0....