2009年6月5日 星期五

PHP 連 MSSQL

要裝三個套件
unixODBC
php-mssql
freetds

執行 yum insatll php-mssql 他會依套件相依性,會自動幫你安裝其他兩個!

====== 這個不知道要不要作 START ======
1.開啟 /etc/ld.so.conf 這個檔案
vi /etc/ld.so.conf
2.於檔案最後加入一行
/usr/local/freetds/lib
3.存檔後離開
4.於命令提示符號下,輸入下方指令
ldconfig
====== 這個不知道要不要作 END ======

安裝好後修改php.ini
vi /etc/php.ini

在622行加入extension=mssql.so;(依系統不同請自行尋找適合的位置)

修改好後將你的 Apache Server重新啟動

service httpd restart

如果正常的話去 phpinfo(); 會看到 Mssql 如下圖


再去修改 freetds.conf


說明:[ ]內的值是未來使用對 sql server 連線時的別名代稱,不一定要叫做 msdb
host 的值則是 mssql server 的位置
tds version: 4.2 (適用 MS SQL Server 6.x);
7.0 (適用 MS SQL Server 7.x);
8.0 (適用 MS SQL Server 2000)
cp950 代表繁體中文字頁碼 (Code Page: 950; ANSI/OEM - Traditional Chinese Big5)
我自已的網站是用 UTF-8(大小寫好像有關係)


cd /usr/local/freetds/bin
cd /usr/local/web/freetds/bin

./tsql -S msdb -U sa
or
tsql -S msdb -U sa
說明:-S指的是以 Server name 連線,如果要以 hostname 做為連線方式,請將『-S』的參數改為『-H』,其它 -p PORT -U 帳號 -P 密碼)

1> use mydatabase
2> select * from mytable
3> go

MSSQL 顯示亂碼:
MSSQL 一般在中文的 Windows 系統下,預設的編碼為 CP950,而非網頁常用的BIG5,因此在顯示在網頁時,必須做轉碼的動作。

忘記檔案位置用 find or whereis
find / -name freetds.conf
vi /usr/local/web/freetds/etc/freetds.conf
vi /etc/freetds.conf

freetds.conf 加一行:client charset = cp950


2. 依照網頁的編碼,使用 iconv 函式:比如網頁是UTF-8,則用iconv('CP950', 'UTF-8', $name);

MSSQL 新增時亂碼:
UTF8 環境,使用 big5_func 解決,如下:
<?php
require_once("../include/big5_func/big5_func.inc"); //中文處理函式庫
$str='你的中文字';
$str=big5_utf8_decode($str); //把UTF8 Decode成Big5
$msquery="insert into test(data) values('$str')";
mssql_query($msquery);
?>

引用:
PHP連MSSQL
在 linux 裡連結mssql
CentOS 5.2 + Apache2 + PHP5 + GD + FreeType + FreeTDS + jpeg6 + zlib + libpng 完整可用安裝方法
CentOs下php连mssql并配置unixODBC

沒有留言:

張貼留言