FROM: http://jamyy.dyndns.org/blog/2005/01/66.html


FreeTDS 提供一套函數庫, 讓執行於 Unix 與 Linux 環境的程式可以透過它存取 Microsoft SQL Server 與 Sybase database.
以下是讓 Linux 上的 PHP 可以透過 FreeTDS 存取 MSSQL Server 的操作步驟:
環境: Fedora Core 1 完全安裝 (已裝有 Apache HTTP Server + PHP + MySQL 的環境)
Step 1. 安裝 FreeTDS
FreeTDS 官方網站: http://www.freetds.org/ 選擇下載 FreeTDS source distribution
編譯參數: --prefix=/usr/local/freetds --enable-msdblib
安裝後, 修改 /etc/ld.so.conf, 加入 /usr/local/freetds/lib; 完成後再執行 ldconfig
Step 2. 修改 /usr/local/freetds/etc/freetds.conf
[sql2k]
host = your.mssql.server.ip
port = 1433
client charset = cp950
tds version = 8.0
a. 中括弧 [ ] 內的字串可自行定義, 往後連線時會用到.
b. tds version: 4.2 (適用 MS SQL Server 6.x); 7.0 (適用 7.x); 8.0 (適用 2000)
Step 3. 測試 FreeTDS 是否可連線 MS SQL Server
#cd /usr/local/freetds/bin
#./tsql -S sql2k -U sa
1> use mydatabase
2> select * from mytable
3> go
成功的話會顯示 mytable 資料
離開 tsql:
1> quit
Step 4. 重新編譯 PHP Source
PHP 官方網站: http://www.php.net/
編譯前, 先用 php 程式執行 echo phpinfo(); 顯示原本安裝時所有的參數, 以取用需要的 configure 參數
最後再加上 --with-mssql=/usr/local/freetds
執行範例:
./configure '--prefix=/usr/local/php_4.3.10' '--localstatedir=/var'
'--disable-debug' '--enable-pic' '--disable-rpath'
'--enable-inline-optimization' '--with-bz2' '--with-db4=/usr' '--with-curl'
'--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr'
'--with-gd' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-ncurses'
'--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png'
'--with-pspell' '--with-regex=system' '--with-xml' '--with-expat-dir=/usr'
'--with-dom' '--with-dom-xslt=/usr' '--with-dom-exslt=/usr' '--with-xmlrpc=shared'
'--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-bcmath'
'--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-safe-mode'
'--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars'
'--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-pear=/usr/share/pear'
'--with-imap=shared' '--with-imap-ssl' '--with-kerberos' '--with-ldap=shared'
'--with-mysql' '--with-pgsql=shared' '--with-snmp' '--with-snmp=shared'
'--enable-ucd-snmp-hack' '--with-unixODBC' '--enable-memory-limit' '--enable-bcmath'
'--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--enable-mcal'
'--enable-mbstring' '--enable-mbstr-enc-trans' '--enable-mbregex'
'--with-apxs2=/usr/sbin/apxs' '--with-mssql=/usr/local/freetds'
編譯、安裝完成後, cp php.ini-dist /prefix/lib/php.ini
Step 5. 啟動 Apache HTTP Server 進行測試
Sample Code:
<?php
mssql_connect('sql2k','sa','');
mssql_select_db('mydatabase');
$rs = mssql_query('select * from mytable');
list($column01) = mssql_fetch_row($rs);
echo $column01;
?>
成功的話, 會顯示 mytable 第一筆資料的第一個欄位內容
mssql functions 請參見: http://tw2.php.net/manual/tw/ref.mssql.php