1 下载SQL Server驱动
Microsoft Drivers for PHP for SQL Server
2 把两个ts.dll放到php/ext里
比如我的php版本是 php7.2.10,64位系统,就把php_pdo_sqlsrv_72_ts_x64.dll 和 php_sqlsrv_72_ts_x64.dll 放进去ext里,剩下的文件删掉即可
3 安装ODBC Driver for SQL Server (msodbcsql.msi)
如何已经安装过Sql Server数据库且没有报错可以不用安装
4 在php.ini找个位置添加两行代码(dll文件的前缀即可),不用加后缀名
extension=php_pdo_sqlsrv_72_ts_64
extension=php_sqlsrv_72_ts_64
4 测试下是否可以连接
public function index() {
//echo phpinfo();
$serverName = "10.10.0."; //数据库服务器地址
$uid = "root"; //数据库用户名
$pwd = "123"; //数据库密码
$connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"test");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if( $conn == false){
echo "连接失败!";
var_dump(sqlsrv_errors());
exit;
}else{
echo "链接成功";
}
}
Tips:连接到Sql Server后, 如果之前你的查询数据库的语句是针对Mysql的,一般也是需要更改的,具体参考 SQLSRV Functions
另外,在项目中发现Mysql和SQL server通过php取数据后的一点异同
- 本来为Int的数据,在Mysql里被php取出后传到js里后是Char类型,而SQLserver仍然是int。
mysql(int) -> php -> js(char)
sqlserver(int) -> php -> js(int)
- 如果有把date类型转换为时间戳的需求,在mysql里,可以通过查询语句直接更改(比如UNIX_TIMESTAMP(Starttime))然后给php。 而在SQLserver里通过query取出来还是date,需要传到php后再进行转换(比如((strtotime($row['Starttime']) )
mysql(date) -> query(convert to timesteamp) -> php( timesteamp )
sqlserver (date) -> query(date) -> php (convert to timesteamp)