PHP 連接 MSSQL

  • You do not have permissions to view this page - please try logging in.

版本為 20:09, 28 Jul 2026

到這個版本。

返回到 版本存檔.

查閱目前版本

系統環境:

  • CentOS 5.5
  • PHP 5.1.6-27
  • MS SQL
     

Microsoft SQL Server and Sybase Functions (PDO_DBLIB)

以 tar file 安裝)
http://www.phpv.net/html/1586.html

以 RPM 方式安裝)
http://www.howtoforge.com/installing...ssql_centos5.0

步驟開始-mssql.so

相依性套件安裝
yum groupinstall "Development Tools"
yum install php-devel freetds-devel
yum install bzip2-devel db4-devel expat-devel gmp-devel aspell-devel httpd-devel libjpeg-devel pam-devel sqlite-devel pcre-devel libc-client-devel cyrus-sasl-devel openldap-devel  postgresql-devel  net-snmp-devel libxslt-devel gd-devel
重編 SRPM 套件

// 下載 SRPM:http://ftp.isu.edu.tw/pub/Linux/CentOS/5.5/os/SRPMS/

cd /usr/src/redhat/SRPMS
wget http://ftp.isu.edu.tw/pub/Linux/CentOS/5.5/os/SRPMS/php-5.1.6-27.el5.src.rpm 
rpm -ivh php-5.1.6-27.el5.src.rpm
vi ../SPECS/php.spec

php.spec:
在最後一個 %package...%description 加上

%package mssql
Group: Development/Languages
Requires: php = %{version}-%{release}, php-pdo
Summary: A module for PHP applications that use the MSSQL database.
provides: php_database
BuildRequires: freetds-devel

%description mssql
The MSSQL package contains a dynamic shared object that will add support for accessing MSSQL databases to php.

找到這幾行,在 CFLAGS 這行刪除 -Wno-pointer-sign 。

# Regenerate configure scripts (patches change config.m4's)
./buildconf --force

CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
CPPFLAGS="-DLDAP_DEPRECATED=1"
export CFLAGS CPPFLAGS

# Install extension modules in %{_libdir}/php/modules.
EXTENSION_DIR=%{_libdir}/php/modules; export EXTENSION_DIR

重新編譯套件
Notes: 如果有顯示缺少的套件,請先完成所有套件安裝。

rpmbuild -bb ../SPECS/php.spec
安裝 mssql.so 模組
cd ../BUILD/php-5.1.6/ext/mssql/
phpize
./configure --with-mssql
make
make install
設定 PHP
vi /etc/php.d/mssql.ini 

mssql.ini:

; Enable mssql extension module
extension=mssql.so

重啟 httpd 服務

測試連接

修改 /etc/freetds.conf,新增

[MSSQL_2K8]
   host = <mssql.server.ip.address>
   port = 1433
   client charset = UTF-8
   tds version = 8.0
   text size = 20971520

demo.php:

<?php
$msconnect = mssql_connect("MSSQL_2K8","sa","pass");
$msdb = mssql_select_db("ERP",$msconnect);
$msquery = "SELECT * from DIM_FSA01_IVS where CUST_NO='MA01'";
$msresults = mssql_query($msquery);
while ($row = mssql_fetch_array($msresults)) {
       echo "<li>" . $row['CUST_NO'] . " " . $row['PKG_TYPE'] . " " . $row['IV_TIME'] .  "</li>\n";
}
?>

Notes:

* MSSQL_2K8,必須與 freetds 設定相同
* ERP,要連結的 DB Name。

Powered by MindTouch Core