作者:coralzd 網址:http://www.freebsdsystem.org/php_mssql
 

在linux 下的php連線mssql,就需要安裝第三方的freetds了。
1、安裝配置freetds
 

  1. wget http://mirrors.xmu.edu.cn/ubuntu/archive/pool/main/f/freetds/freetds_0.82.orig.tar.gz  
  2. tar zxf freetds_0.82.orig.tar.gz  
  3. cd freetds_0.82 
  4. ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 -–enable-msdblib -–enable-dbmfix -–with-gnu-ld -–enable-shared -–enable-static  
  5. make && make install  

2、編譯php的mssql模組
 

  1. cd /path/to/php/source 進入PHP原始碼目錄  
  2. cd ext/mssql 進入MSSQL模組原始碼目錄  
  3. /usr/local/webserver/php/bin/phpize 生成編譯配置檔案  
  4. ./configure –with-php-config=/usr/local/webserver/php/bin/php-config –with-mssql=/usr/local/freetds  
  5. make  
  6. make install  
  7. 編譯完成生成 mssql.so,修改php.ini,將該模組載入:  
  8. extension=”/path/to/extension/mssql.so”  
  9.  

3、配置mssql
cd /usr/local/freetds/etc
編輯檔案:
vi freetds.conf

 

  1. [global]  
  2. # TDS protocol version  
  3. ; tds version = 4.2  
  4.  
  5. # Whether to write a TDSDUMP file for diagnostic purposes  
  6. # (setting this to /tmp is insecure on a multi-user system)  
  7. ; dump file = /tmp/freetds.log  
  8. ; debug flags = 0xffff  
  9.  
  10. # Command and connection timeouts  
  11. ; timeout = 10  
  12. ; connect timeout = 10  
  13.  
  14. # If you get out-of-memory errors, it may mean that your client  
  15. # is trying to allocate a huge buffer for a TEXT field.  
  16. # Try setting ‘text size’ to a more reasonable limit  
  17. text size = 64512  
  18. client charset = UTF-8 #加入  
  19.  
  20. #加入  
  21. [Server2005]  
  22. host = 192.168.x.x  
  23. port = 1433  
  24. tds version = 7.2  
  25.  

4、測試php連線mssql

 

  1. <?php  
  2.  
  3. try {  
  4.  
  5. $hostname=`218.x.x.x`;//注意,這裡和上面不同,要直接用IP地址或主機名  
  6. $port=1433;//埠  
  7. $dbname="user";//庫名  
  8. $username="database";//使用者  
  9. $pw="passwd";//密碼  
  10. $dbhnew PDO("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");  
  11. } catch (PDOException $e) {  
  12. echo"Failed to get DB handle: ".$e->getMessage() ."n";  
  13. exit;  
  14. }  
  15.  
  16. echo`connent MSSQL succeed`;  
  17.  
  18. $stmt=$dbh->prepare("select * from z_2010pinjiu_user");  
  19. $stmt->execute();  
  20. while ($row=$stmt->fetch()) {  
  21. print_r($row);  
  22. }  
  23. unset($dbh); unset($stmt);  
  24.  
  25. ?>