安装扩展这部分直接看我的另外一篇文章,地址是:
http://gaojiufeng.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即可。
浪费了一天半的时间研究这个东西真不划算,大部分时间卡在了编码问题,还以为是不支持,还好帮朋友解决了问题。