freetds是linux下连接sqlserver的重要中间件
如果是:
php7.1 homestead
service php7.1-fpm restart
sudo apt-get install php7.1-sybase
sudo apt-get install freetds-bin
如果是老版ubuntu php5
ubutnu: pdo_dblib + sqlsrv +mssql
apt-get install php5-sybase
apt-get install freetds-bin
freetds.conf:
[global]
# TDS protocol version
; tds version = 4.2
tds version = 7.0 //这里一定要设定7.0以上版本否则会出现很多兼容问题
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
client charset = UTF8
//tds 必须选择7.0 + client charset
//找不到 dblib 解决办法
rpm -qa | grep freetds
rpm -ql freetds-devel-0.91-2.el6.x86_64
./configure --with-php-config=/usr/local/php/bin/php-config --with-libdir=lib64
//freetds 验证
tsql -S 42.62.69.77 -U byecitysql
//这里省略了输入密码环节
use dbname
go
select * from table
go
下面是php代码做的验证mssql
//pdo_dblib验证
$dbh= new PDO("dblib:host=testServer;dbname=db","test","test");
var_dump($dbh);
//mssql 验证
$server = "42.62.69.99";
$link = mssql_connect($server, 'byecitysql', '11111111111');
if (!$link || !mssql_select_db('BCS', $link)) {
die('Unable to connect or select database!');
}
// Do a simple query, select the version of
// MSSQL and print it.
//$version = mssql_query('SELECT @@VERSION');
$version = mssql_query('SELECT * from dbo.Base_Country');
$row = mssql_fetch_array($version);
// Clean up
mssql_free_result($version);
下面是修正sqlserver默认读取出来的日期时间 不是 标准的日期时间的问题。
修正freetds读取sqlserver中时间日期转换的问题 |
Redhat: Ubuntu: 可能路径: /usr/local/etc/locales.conf |
[default] date format = %Y-%m-%d %H:%M:%S ubuntu date format = %Y-%m-%d %H:%M:%S.000 后面的.000建议去掉统一时间格式,这样跨平台兼容性最高 |