使用过SQL Server的人应该都清楚,SQL Server常用的有两种认证方式,一种是本地系统账户认证(Windows Authentication ),一种是使用用户名和密码(SQL Server Authentication ),第二种认证方式必须启用SQL Server的混合模式。
1.Windows Authentication连接部分代码段:
<?php
$serverName = "(local)";
$connectionInfo = array("Database"=>"TestingInfo","ConnectionPooling"=>false);
$conn = sqlsrv_connect( $serverName,$connectionInfo);
if( $conn == false)
{
echo "连接失败!";
die( print_r( sqlsrv_errors(), true));
}
?>
2.SQL Server Authentication连接部分代码段:
<?php
$serverName = "(local)";
$uid = "sa";
$pwd = "******";
$connectionInfo = array("UID"=>$uid,"PWD"=>$pwd,"Database"=>"TestingInfo");
$conn = sqlsrv_connect( $serverName,$connectionInfo);
if( $conn == false)
{
echo "连接失败!";
die( print_r( sqlsrv_errors(), true));
}
?>
参考官方提供的英文原文档,针对参数$connectionInfo做一个简单说明,因为$connectionInfo是一个Hash表结构,下边参数格式为:
Key[DataType]:
Description(Default Value):键[数据类型]:描述(默认值)
【1】APP[String类型]:
使用的应用程序名称【*:我自己不太懂得这个地方的意义,不好意思】(没有默认值)
【2】ConnectionPooling[1或true为打开连接池,0或false为关闭连接池]:
用来设置是否打开SQL Server的连接池功能(默认值为true(1))
【3】Database[String类型]:
连接的数据库的名称,所有连接提供的数据库名称类似ASP.NET里面web.config的连接字符串里面的数据库实例名,如果设置了Database的连接属性,驱动会默认使用SQL Server支持的Transact-SQL脚本来操作所有提供的数据库实例,包括添加、删除、查询、修改等各种操作(默认为登陆的操作系统里面的数据库,我没有测试过,应该是直接运行程序的(local))
【4】Encrypt[1或true为执行加密,0或false为不执行加密]:
设置是否对传入服务器的SQL脚本执行加密操作,当然如果使用加密操作会对系统性能存在一定影响,不过影响不明显(默认为false(0))
【5】Failover_Partner[String类型]:
提供一个服务器镜像,此属性应该是用于主服务器Down掉的情况,当主服务器Down掉的时候,提供一个备份的数据库和服务器的实例镜像作为备份的服务器处理。(未设置默认值)
【6】LoginTimeout[Integer类型]:
提供连接的超时时间,时间单位为秒。(未设置)
【7】PWD[String类型]:
当使用SQL Server Authentication认证方式的时候需要提供该属性,该属性为登陆用户的密码。(未设置任何值)
【8】QuotedId[1或true就是用SQL-92标准,0或false就是用遗留的标准]:
设置使用SQL脚本的标准是使用SQL-92标准还是使用遗留的Transact-SQL标准。(默认值为true(1))
【9】TraceFile[String类型]:
此属性主要为监控数据使用,可用于调试或者维护,它的值为一个路径,SQL Server会将所有的数据执行操作写入该路径,至于具体内容是什么,我没有使用过。(未设置默认值)
【10】TraceOn[1或true打开监控,0或false关闭监控]:
是否打开ODBC连接方式的监控。(默认值false(0))
【11】TransactionIsolation[常量值]:
提供数据库的事务级别(SQLSRV_TXN_READ_COMMITTED)
常量值包括
SQLSRV_TXN_READ_UNCOMMITTED,
SQLSRV_TXN_READ_COMMITTED,
SQLSRV_TXN_REPEATABLE_READ,
SQLSRV_TXN_SNAPSHOT,
SQLSRV_TXN_SERIALIZABLE
【12】TrustServerCertificate[1或true设置为客户端限制,0或false设置为客户端不限制]:
如果设置为 true,则使用 SSL 对通道进行加密,但不通过证书链对可信度进行验证。如果将TrustServerCertificate 设置为 true 并将 Encrypt 设置为 false,则不对通道进行加密。可识别的值为 true、false、yes 和 no。有关更多信息,请参见 SQL Server 2005 Books Online(《SQL Server 2005 联机丛书》)中的“Encryption Hierarchy”(加密层次结构)和“Using Encryption Without Validation”(使用不验证的加密)。(默认值:false(0))
【13】UID[String类型]:
当使用SQL Server Authentication认证方式的时候需要提供该属性,该属性为登陆用户的用户名。(未设置任何值)
【14】WSID[String类型]:
监控计算机名称,此属性很少用。(未设置任何值)
-------------------------------------------------------------------
连接数据库中文乱码解决方案:
第一种方法:把网页存为GBK编码,网页里设置charset=gbk
第二种方法:用iconv或者mb_convert_encoding把从数据库里读出的字符串从GBK转换到UTF-8编码,网页里设置charset=utf-8。
iconv( 'GBK ', 'UTF-8 ',$string)就是把字符串从GBK转换到UTF-8.