700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Thinkphp6使用pdo_odbc连接SQL Server2000

Thinkphp6使用pdo_odbc连接SQL Server2000

时间:2019-03-18 21:58:05

相关推荐

Thinkphp6使用pdo_odbc连接SQL Server2000

最近做一个项目,采用了Thinkphp6框架,因为要支持调用dll动态库,使用了php7.4的ffi新功能(见文章:《php7.4使用FFI连接C语言的动态库》),但是项目连接的数据库是SQL Server2000,这是一个很老的项目,所以使用了这个版本的数据库(就目前来说我也喜欢SQL Server2000,下载了一个绿色版解压缩运行后整个目录才137MB)。

然而在php里怎么连接这个数据库呢?Thinkphp6内置了Sqlsrv的支持,只要配置config目录里的database.php即可。但是我最开始采用的是pdo调用php_sqlsrv_74_ts_x86和php_pdo_sqlsrv_74_ts_x86,这种方式太新了,还需要安装一个ODBC驱动,可是这个驱动最低版本是11,11版也只能支持SQL Server版以及更新版本,并不支持SQL Server2000.

后来继续各种百度,发现用pdo_odbc连接数据库,就可以避免安装这个驱动了,因为odbc可以指定我采用哪个odbc驱动,而我的电脑里默认就安装了odbc,运行里输入odbcad32回车,就看到如下画面:

可以看到自带的驱动名称为SQL Server,那么database.php里的connections数组增加一个配置:

'sqlserver' => ['type'=> 'sqlsrv','dsn'=> 'odbc:Driver={SQL Server};Server=127.0.0.1,7788;Database=data_db','username' => 'xxxx','password' => 'xxxx',],

启用php.ini里的extension=pdo_odbc(注意低版本的php可能配置写成了extension=php_pdo_odbc.dll,检查php的ext目录的确有这个文件,如果是linux,可以安装这个扩展)。

重启apache,按照Thinkphp的规则写代码,即可访问:

<?phpnamespace app\model;class Test extends \think\Model{protected $connection = 'sqlserver';}//如下可以获取,代码自己组织:function UTF8($gbkString) {return iconv('GB18030', 'UTF-8', $gbkString);}try {$rows = \app\model\Test::select()->toArray();foreach ($rows as $key => $row) {echo UTF8($row['name']) . ' ';}} catch (\Exception $e) {return UTF8($e->getMessage());}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。