凡是连接数据库,必须安装客户端,我一般写博客都不写原理,但是后来发现回头看自己写的自己都看不懂,所以这章博客会多一点原理性的东西。
数据库的连接一般都是在客户端上完成的,MySQL也不例外,安装mysql时一般都会这么安装:
1
|
#yum install mysql mysql-server
|
上面的mysql就是安装的客户端,mysql-server就是服务端,不安装客户端(mysql)就没办法执行mysql连接命令:mysql -u user -p pass -h -P port
而sqlserver同样需要客户端,下面讲的就是在linux下安装sqlserver 2008的客户端freetds
安装环境:
1
2
3
|
#centos6.8
#php5.6
#sqlserver2008
|
下载freetds,一般都会在官网下载,这个开源的想必没人会用盗版。
1
2
3
4
5
6
|
wget
ftp
:
//ftp
.freetds.org
/pub/freetds/stable/freetds-patched
.
tar
.gz
#linux下载有点慢,可以在windows上下载,然后再上传至linux上。
tar
zxf freetds-patched.
tar
.gz
cd
freetds-1.00.27
.
/configure
--prefix=
/usr/local/freetds
--with-tdsver=7.3 --
enable
-msdblib
make
&&
make
install
|
2.导入ldconfig
1
2
|
echo
"/usr/local/freetds/lib/"
>
/etc/ld
.so.conf.d
/freetds
.conf
ldconfig
|
3.查看安装的版本:
1
|
/usr/local/freetds/bin/tsql
-C
|
4.测试能否连接sqlserver:
1
|
/usr/local/freetds/bin/tsql
-H 10.10.10.10 -p 1433 -U sa -P password
|
5.添加PHP扩展mssql和pdo_dblib,这是php两种连接mssql的方式,只安装mssql也可以。
注意:一般安装php会选择两种方式,一种是编译安装,一种是yum安装。下面分别来讲解两种方式的安装方式:
1)yum安装的php
#很简单,直接yun安装mssql插件即可:
1
2
|
yum
install
php-pdo -y
yum
install
php-mssql -y
|
2)编译安装的php
1
|
#进入到php的安装包中,安装mssql插件
|
1
2
3
4
|
cd
/home/tools/php-5
.6.20
/ext/mssql/
/usr/local/php/bin/phpize
.
/configure
--with-php-config=
/usr/local/php/bin/php-config
--with-mssql=
/usr/local/freetds/
make
&&
make
install
|
1
2
3
4
5
|
#安装pdo_dblib
cd
/home/tools/php-5
.6.20
/ext/pdo_dblib/
/usr/local/php/bin/phpize
.
/configure
--with-php-config=
/usr/local/php/bin/php-config
--with-pdo-dblib=
/usr/local/freetds/
make
&&
make
install
|
在php.ini中添加mssql和pdo_dblib:
1
2
3
4
5
6
7
|
mv
/usr/local/php/lib/php/extensions/no
*
/mssql
/usr/local/php/lib/php/extensions/
mv
/usr/local/php/lib/php/extensions/no
*
/pdo_dblib
/usr/local/php/lib/php/extensions/
#把前面安装的扩展插件生成的文件移动到extension目录下
vi
/usr/local/php/lib/php
.ini
extension_dir =
"/usr/local/php/lib/php/extensions"
extension =
"mssql.so"
extension =
"pdo_dblib.so"
|
3)重启php,看扩展插件有没有生效:
#编译一个php测试文件:
1
2
3
4
|
vi
/www/html/test
.php
<?php
phpinfo();
?>
|
用浏览器打开上面的测试文件,会看到如下信息,代表成功安装:
6.测试mssql连接sqlserver2008:
#编辑一个测试文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
vi
/www/html/connect_sql
.php
<?php
header(
"Content-type: text/html; charset=utf-8"
);
$msdb=mssql_connect(
"10.10.10.10:1433"
,
"sa"
,
"password"
);
if
(!$msdb) {
echo
"connect sqlserver error"
;
exit
;
}
mssql_select_db(
"test"
,$msdb);
$result = mssql_query(
"SELECT top 5 * FROM student"
, $msdb);
while
($row = mssql_fetch_array($result)) {
print_r($row);
}
mssql_free_result($result);
?>
|
#如果内容是sqlserver test数据库,student表内的内容代表php成功连接到数据库。
7.测试pdo_dblib连接sqlserver2008:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#创建一个测试文件
vi
/www/html/connect_db
.php
<?php
header(
"Content-type: text/html; charset=utf-8"
);
try {
$
hostname
=
"10.10.10.10"
;
$port = 1433;
$dbname =
"test"
;
$username =
"sa"
;
$pw =
"password"
;
$dbh = new PDO (
"dblib:host=$hostname:$port;dbname=$dbname"
,
"$username"
,
"$pw"
);
} catch (PDOException $e) {
echo
"Failed to get DB handle: "
. $e->getMessage() .
"\n"
;
exit
;
}
$stmt = $dbh->prepare(
"SELECT top 5 * FROM student"
);
$stmt->execute();
while
($row = $stmt->fetch()) {
print_r($row);
}
unset
($dbh);
unset
($stmt);
?>
|
#如果内容是sqlserver test数据库,student表内的内容代表php成功连接到数据库。
本文转自 王家东哥 51CTO博客,原文链接:http://blog.51cto.com/xiaodongge/1926312