thinkphp5访问sql2000数据库
Posted skysowe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp5访问sql2000数据库相关的知识,希望对你有一定的参考价值。
大家都知道php跟mysql是绝配,但是因为有时候工作需要,要求php访问操作sql2000,怎么办呢?
一般来说有两种方式:
1. sqlsrv驱动方式
2. odbc方式
sqlsrv驱动方式,因为微软公司原因,不提供sql2000的访问驱动,只提供了sql2005以上的驱动,所以如果你的数据库是2005以上版本,特别是sql2008r2,到微软官方可以下载到sql2008 for php的驱动,网上有很多文章介绍,我的博客里有篇文章 http://www.cnblogs.com/skysowe/p/5749022.html 专门讨论这个情况;
我工作环境是:php 5.5n(phpstudy) + nginx + tp5.10 + sql2000 + win7(64位)系统
网上搜到了这篇文章http://www.cnblogs.com/huangtailang/p/6485528.html,测试了一下,文章里的方法是可用的:
(一)使用odbc方式在控制器里工作:
<?php namespace app\\index\\controller; use PDO; //for pdo odbc sql2000 or sql2008r2 class Index { public function index() { header(\'Content-type:text/html; charset=utf-8\'); ////////////////////////////////////////////////////// //test sql2000&sql2008r2 pdo ////////////////////////////////////////////////////// $dbname=\'master\'; $username=\'sa\'; $password=\'yoooko\'; //--------------------------------------------------------------ok //sql2000 $mssqldriver = \'{SQL Server}\'; $hostname=\'127.0.0.1\\sql2000,1434\'; //使用ODBC方式连接 $dbDB = new PDO("odbc:Driver=$mssqldriver;Server=$hostname;Database=$dbname", $username, $password); //-------------------------------------------------------------- //--------------------------------------------------------------ok //sql2008r2 //$mssqldriver = \'{SQ Server Native Client 11.0}\'; //$mssqldriver = \'{ODBC Driver 11 for SQL Server}\'; //$hostname=\'127.0.0.1\\sql2008r2,14333\'; //没有安装sqlsrv驱动时无法使用,error:could not find driver //$dbDB = new PDO("sqlsrv:Server=$hostname;Database=$dbname", $username, $password); //-------------------------------------------------------------- $sql = "SELECT * FROM cs"; foreach ($dbDB->query($sql) as $row) { var_dump($row); } } }
(二)使用database.php + 控制器的方式工作
在database.php里配置:
return [ // 数据库类型 \'type\' => \'Sqlsrv\', //必须输入<br> // 用户名 \'username\' => \'sa\', // 密码 \'password\' => \'yoooko\', // 连接dsn,驱动、服务器地址和端口、数据库名称 \'dsn\' => \'odbc:Driver={SQL Server};Server=127.0.0.1\\sql2000,1434;Database=master\', ];
在Index.php控制器里:
<?php namespace app\\index\\controller; use think\\Db; class Index { public function index() { header(\'Content-type:text/html; charset=utf-8\'); //$user = Db::table(\'cs\')->select(); //不行,有row_number()错误 $user = Db::query("select * from cs"); //必须使用原生sql方式,正确 echo \'<pre>\'; print_r($user); echo \'</pre>\'; } }
以上是关于thinkphp5访问sql2000数据库的主要内容,如果未能解决你的问题,请参考以下文章