2014年2月28日 星期五

用 PHP 存取 SQL Server (使用AppServ 2.5.10)

PHP 存取 SQL Server 目前已知有2種做法

  1. 使用  mssql  lib
  2. 使用  sql_srv  lib
但是,第一 種方法不管我怎麼嘗試,就是無法連線成功。網路上許多人的解法也都大同小異,我每個都嘗試過,依舊不能連線。


 這邊轉貼一下 第一種作法的 教學文 (有興趣可以自行研究)

-----------------------------------------------------------------------------------
 以下開始第二種方法的教學


STEP.1 安裝AppServ 2.5.10

STEP2. 停止Apache服務 (萬無一失做法)


( 如圖,開始 → 搜尋程式與檔案 → 鍵入'"服務" → 點選「服務」) 

 



( 如圖,找到 "Apache2.2" 雙擊 → 停止 → 先別關掉,等等還要啟動)


STEP.3 前往 Microsoft for PHP connect SQL Server 下載補丁

 (如上圖,點選Download)


( SQLSRV30.EXE 是 PHP5.4 ~PHP5.5 版本的補丁
  SQLSRV20.EXE 是 PHP5.2 ~PHP5.3 版本的補丁

  由於我安裝的 AppServ  2.5.10 內建 PHP5.2,所以下載 SQLSRV20.EXE )



STEP4. 安裝補丁 (其實只是把檔案解壓縮,隨便選個空資料夾 暫放)


STEP5. 將補丁「php_sqlsrv_52_ts_vc6.dll」與「php_pdo_sqlsrv_52_ts_vc6.dll」複製到以下路徑內
  • C:\AppServ\php5\ext



STEP6. 開啟  php.ini   ( C:\Windows\php.ini )

在最底下加入這兩行 →儲存檔案

extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll



STEP7. 啟動Apache服務  (同STEP.2 但要點 "啟動")


STEP8. 確認安裝成功
用瀏覽器開啟  http://localhost/phpinfo.php
查看是不是有 sqlsrv 字樣 (可以用Ctrl+F 搜尋),有找到代表成功


STEP9. 撰寫一隻 PHP程式,測試是否連線 (Code供參考)

<?
   $serverName = "Server名稱";
   $database = "資料庫名稱";
   $uid = "登入帳號";
   $pwd = "登入密碼";

   try {
      $conn = new PDO( "sqlsrv:server=$serverName;Database = $database", $uid, $pwd);
      $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

   } catch( PDOException $e ) {
      die( "Error connecting to SQL Server".$e->getMessage() );
   }
   echo "Connected to SQL Server";
?>

如果輸出 Connected to SQL Server 代表連線成功 !!



參考資料

https://bugs.php.net/bug.php?id=49315
http://social.technet.microsoft.com/Forums/sqlserver/en-US/5d9e84c2-1c05-449a-aae5-503e2ad6f9ca/named-pipes-provider-could-not-open-a-connection-to-sql-server-2?forum=sqldataaccess
http://www.sqlservercentral.com/Forums/Topic1127826-146-1.aspx
http://www.channaly.info/connect-to-microsoft-sql-server-2005-2008-with-php/
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/b1206aff-1fb3-444c-ab09-0b0298e5d975/cannot-get-php-to-connect-to-sqlserver?forum=sqldriverforphp
http://blog.csdn.net/yanch7/article/details/6335911
http://www.dotblogs.com.tw/joe80075/archive/2011/02/09/21288.aspx
http://www.dotblogs.com.tw/jellycheng/archive/2010/11/02/18743.aspx