wamp下对MS SQLSERVER的连接配置,PHP+THINKPHP5
通过
网上资料加上自己亲测汇总以下资料环境 WIN7 64 WAMP 3.0.6 64 选的是PHP 5.6版本 thinkphp与mysql连接很容易,MSSQL就相对复杂点,主要是没有自带驱动需要微软的。这个是PHP的事情和thinkphp无关,支持了就都可以了。
PHP连接MSSQL2008/2005数据库与以往的连接mssql2000是不一样的,而我们常用的php.ini中的
extension=php_mssql.dll扩展只适用连接于MSSQL2000哦.PHP 5.6根本就没有这个配置下载一个SQL Server Driver for PHP这是一个扩展包,我是在这里下载的
http://www.microsoft.com/en-us/download/details.aspx?id=20098 根据你的php版本选择对应的安装包。由于我的PHP版本是5.6,所以我下载的是 SQLSRV32.EXE, 运行后选择解压目录为 D:\\wamp64\\bin\\php\\php5.6.25\\ext我装的是WAMP,这个根据实际打开该目录,里面出现了php_pdo_sqlsrv_52_nts.dll php_pdo_sqlsrv_52_ts.dll php_pdo_sqlsrv_53_nts_vc6.dll php_pdo_sqlsrv_53_nts_vc9.dll
php_pdo_sqlsrv_53_ts_vc6.dll php_pdo_sqlsrv_53_ts_vc9.dll php_sqlsrv_52_nts.dll php_sqlsrv_52_ts.dll php_sqlsrv_53_nts_vc6.dll php_sqlsrv_53_nts_vc9.dll php_sqlsrv_53_ts_vc6.dll php_sqlsrv_53_ts_vc9.dll
SQLServerDriverForPHP.chm(手册,英文够好可以看看) SQLServerDriverForPHP_License.rtf
SQLServerDriverForPHP_Readme.htm(自述文件) 等等。。。12345678910111213141516配置php.ini(1)在php.ini中添加如下两条扩展:extension=php_sqlsrv_56_ts.dll extension=php_pdo_sqlsrv_56_ts.dll12(2)
将;extension=php_pdo.dll前面的;去掉,开启pdo连接扩展··这个dll是旧版本php需要配置的,5.6版本没有这个dll(3)重新启动apache或者IIS,备注:不要用***_nts.dll的文件,这样就会失败,ts和nts的意思是:是否线程安全。和php版本有关,用phpinfo();查看,打印出phpinfo,找到Thread Safety,如果是disabled就是非线程安全就用nts版本;如果是enable就用ts版本。extension=php_sqlsrv_56_nts.dll extension=php_pdo_sqlsrv_56_nts.dll12如果使用的php版本
是64位的话(这里的64位可能是指WAMP64或者win7 64),官网的 php_sqlsrv_xx_ts.dll和 php_pdo_sqlsrv_xx.tl.dll 不起作用,网友收集了对应的64位版本dll,请到
http://pan.http://m.wodefanwen.com//s/1kUCP7EJ 下载选择对应版本即可。(我环境下确实官方的无效,用的是非官方才有效)(4)这时候你在phpinfo()中的PDO配置中会看见已经存在sqlsrv了。这个非常重要,包括ORACLE也是,只有出现OCI才算支持。否则代码就别去测试了,肯定不行的。 (5)然后查找 PHP.INI mssql.secure_connection 把值改为on(没测试是否必须)下载MS SQL SERVER Native Client安装分64和32位的,根据自己系统来装亲测必须的,可能WAMP服务器和MSSQL服务器在一起就不需要了?,这个部分还是以sqlsvr是否在PHPINF()中显示出来为准。有了这步就不用了。
下载安装一个Microsoft? ODBC Driver 11 for SQL
Serverhttps://www.microsoft.com/download/details.aspx?id=36434 我不知道选择语言有什么用处。反正我安装的是简体中文。32WIN7下亲测必须装
To access data in a SQL Server 2005 or later database using the Microsoft Drivers for PHP for SQL Server (SQL Server 2008 or later if using version 3.2 or 3.1), you must have the following components installed on your computer:结语配置的难点在于
确定php版本以及SQL Server Driver for PHP的对应关系。关键的关键是看
phpinfo(),有了SQLSVR的字样代表PHP 支持MSSQL了,如果有其他问题就是代码或者配置文件出错了 在原生PHP下的测试代码$serverName = \//serverName\\instanceName
$connectionInfo = array( \\$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn ) {
echo \}else{
echo \ die( print_r( sqlsrv_errors(), true)); }
在THINKPHP下的配置和使用(多数据库配置的方法):由于TP5是支持PDO,配置好文件后,使用上和MYSQL是一样的新建DATABASE1return [ // 数据库类型
'type' => 'sqlsrv', // 服务器地址
'hostname' => 'x.x.x.x',
// 数据库名
'database' => 'dbname', // 用户名
'username' => 'NAME', // 密码
'password' => 'PW', // 端口
'hostport' => '1433', // 连接dsn
'dsn' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式
'debug' => true,config文件引入多数据库配置$dbcon=require_once ('database1.php');return [ //
+---------------------------------------------------------------------- // | 应用设置
//
+---------------------------------------------------------------------- 'database1'=>$dbcon,
PHP代码:多配置下的MSSLQ表查询
$dbDB=\\think\\Db::connect('database1')->table(\ORM2008\附录SQLServer 查询当前配置的字符编码:SELECT
COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')1下面是查询结果对应表:返回值编码信息936简体中文GBK950繁体中文BIG5437美国/加拿大英语932日文949韩文866俄文65001unicode UFT-8
//
+---------------------------------------------------------------------- 'database1'=>$dbcon,
PHP代码:多配置下的MSSLQ表查询
$dbDB=\\think\\Db::connect('database1')->table(\ORM2008\附录SQLServer 查询当前配置的字符编码:SELECT
COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')1下面是查询结果对应表:返回值编码信息936简体中文GBK950繁体中文BIG5437美国/加拿大英语932日文949韩文866俄文65001unicode UFT-8