Account | |
Password |
最近接到一個案子要用php+mssql2008開發,
php在linux主機上,mssql2008在windows主機,
於是連線到資料庫的方法必須要能在linux上跑,
同時開發開環境是在windows,所以windows也要能跑,
再加上網頁用utf-8編碼,連到mssql2008會送亂碼,
於是在試過幾個方案後,覺得這個方式比較適合,
整理一下,並做個筆記
[Windows]
win7+appserv2.5.10
winxp sp3+appserv2.5.10
下載並copy php_dblib.dll(這裡用的是TS版)至c:\windows\system32 or php的ext目錄下
php_dblib下載頁面
修改php.ini
把extension=php_mssql.dll註解掉
變成;extension=php_mssql.dll
加上一行
extension=php_dblib.dll
[Linux]
Centos5.x
#yum install php-mssql freetds
(yum預設的extras套件庫)
Centos6.x
#yum install php-mssql freetds
(使用epel套件庫)
完成之後,重啟apache
寫一隻phpinfo的程式
成功的話,可以找到「mssql」的項目
Library version 是 FreeTDS
([Windows]沒把php_mssql.dll註解掉,這邊就變成7.0了)
==================================================
編輯freetds.conf
Windows
C:\freetds.conf 自行建立
Linux
#vi /etc/freetds.conf
在結尾加入以下 內容
[test]
host = localhost
port = 1433
tds version = 7.0
client charset = UTF-8
註:
比較新版的freetds設定需在等號前加上一個空白
保險起見,比照範例,在等號前後最好各加上一個空白
說明
[test] 中括號裡面的test是指程式連線用的名稱
host = localhost sql server的ip/主機名稱
port = 1433 sql server連接埠,1433為預設值
tds version = 7.0 請參考Choosing a TDS protocol version
client charset = UTF-8 在此指定編碼為UTF-8
==================================================
寫一隻demo.php
<?php
$myServer = "test"; //FreeTDS 內的 SQL Server 區段設定名稱
$myUser = "sa"; //用戶名稱
$myPass = "123456"; //用戶密碼
$myDB = "mydb"; //SQL Database 名稱
$s = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");
$d = @mssql_select_db($myDB, $s)
or die("Couldn't open database $myDB");
$query = "select name from dbo.test ";
$result = mssql_query($query);
$numRows = mssql_num_rows($result);//取得row數
echo "共有".$numRows."筆<br>";
while($row = mssql_fetch_array($result))
{
echo $row["name"] . "<br>";
}
?>
以上參考自:
●Using FreeTDS on Unix
●Installing_MSSQL_for_PHP
●PHP連MSSQL
●Choosing a TDS protocol version
Copyright © 2012 NBOX. All Rights Reserved. |