iT邦幫忙

DAY 28
2

遭遇PHP之經驗分享系列 第 28

[鐵人賽Day28]PHP連結SQL Server(MSSQL)的方法與測試連線

在想題目時,在懊惱要寫什麼,做了許多的聯想,有加解密、判斷空白字元、QRcode、Javascript、MySQL等等‧‧‧
那還有什麼相關的還沒寫到的呢...咦? MySQL...資料庫,突然想到先前有用PHP去連結SQL Server,那就決定今天用這個主題好了

寫此文時的環境說明:Apache2.4、PHP5.4

Step1. 下載必要檔案
Microsoft Drivers 3.0 for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

(若是SQL Server 2014 則不用下載安裝此套件)
Microsoft SQL Server 2012 Native Client
X86 封裝 (SqlCmdLnUtils.msi)
X64 封裝 (SqlCmdLnUtils.msi)

適用於 Visual Studio 2013 的 Visual C++ 可轉散發套件 (視Apache位元版本下載)
http://www.microsoft.com/zh-tw/download/details.aspx?id=40784
(註:MSVCP110.dll Missing問題)

Step2. 安裝Microsoft SQL Server 2012 Native Client

Step3. 執行Microsoft Drivers 3.0 for PHP for SQL Server
執行後,會產生SQLSRV30資料夾,內有php_pdo_sqlsrv與php_sqlsrv的dll檔

Step4. 複製dll檔到ext資料夾
觀看C:\WAMP\php5.4內檔案,是Thread Safe(php5ts.dll)還是Non Thread Safe(php5.dll)
此次示範是Thread Safe(php5ts.dll),因此複製php_pdo_sqlsrv_54_ts.dll及php_sqlsrv_54_ts.dll到C:\WAMP\php5.4\ext內

Step5. 設定php.ini
首先,複製一份php.ini-development,並重新命名為php.ini
接著編輯php.ini,設定extension_dir=為extension_dir = "C:/WAMP/php5.4/ext"
接著在增加以下兩行:
extension=php_sqlsrv_54_ts.dll
extension=php_pdo_sqlsrv_54_ts.dll

Step6. 重新啟動Apache Web Server
(此處要是80Port被SYSTEM佔去的話,請參考以下做法:

  1. 找尋被占用的PID及程序名稱:netstat -nabo
  2. 使用net stop http關閉http服務
  3. 再使用sc config http start= disabled
  4. 重新開機
  5. 完成@@)

Step7. 建立測試連結用的PHP檔案(mssql_test)
如下程式內碼:
(參考連結:http://php.net/manual/en/function.sqlsrv-connect.php)
「mssql_test.php」
$connectionInfo處要改為自己的連線資訊

Example:
$connectionInfo=array("Database"=>"ithome_test","UID"=>"sa","PWD"=>"mssql_test","CharacterSet" => "UTF-8");

<?php
     header("Content-Type:text/html; charset=utf-8");
     $serverName="(IP位置或127.0.0.1-serverName)\SQLEXPRESS, (通訊埠Port)";
     $connectionInfo=array("Database"=>"資料庫名稱dbName","UID"=>"使用者名稱userName","PWD"=>"使用者密碼password","CharacterSet" => "UTF-8(編碼)");
     $conn=sqlsrv_connect($serverName,$connectionInfo);
         if($conn){
             echo "Success!!!";
         }else{
             echo "Error!!!<br />";
             die(print_r(sqlsrv_errors(),true));
         }            
?>

接著開啟瀏覽器http://localhost/mssql\_test.php
要是成功會顯示「Success!!!」
要是失敗會顯示「Error!!!」及錯誤訊息


上一篇
[鐵人賽Day27]Captcha驗證碼分析與實作
下一篇
[鐵人賽Day29]PHP搭配SQL Server(MSSQL)的基本操作
系列文
遭遇PHP之經驗分享30
0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:24

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 12:10:43 檢舉

請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sqlsrv_55_ts.dll,嘗試測試看看

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:33

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 12:10:37 檢舉

請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sqlsrv_55_ts.dll,嘗試測試看看

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:47

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 12:10:33 檢舉

請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sqlsrv_55_ts.dll,嘗試測試看看

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:48

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 12:10:28 檢舉

請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sqlsrv_55_ts.dll,嘗試測試看看

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:49

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 12:10:24 檢舉

請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sqlsrv_55_ts.dll,嘗試測試看看

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:49

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 12:10:20 檢舉

請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sqlsrv_55_ts.dll,嘗試測試看看

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:49

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 11:58:32 檢舉

請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sqlsrv_55_ts.dll,嘗試測試看看

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:50

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 11:58:13 檢舉

**chiahung79http://www.microsoft.com/en-us/download/details.aspx?id=20098**提到:
請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sq...(恕刪)

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:47:51

作者你好,我按照上述步驟打完之後,卻跳出一個錯誤訊息
(Warning)
PHP Startup: Unable to load dynamic library
'c:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_55_ts.dll' - %1 不是有效的Win32應用程式。

請問這要怎麼解決呢?
OS:win8.1
最新版的64位元wamp
php5.5.12
apache2.4.9

Old Siao iT邦研究生 1 級‧ 2015-01-12 11:57:39 檢舉

請到這邊Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載Microsoft Drivers 3.1
內有php_sqlsrv_55_ts.dll,嘗試測試看看

0
hshs
iT邦新手 5 級 ‧ 2014-12-22 22:52:32

怎麼刪留言啊,抱歉,不太會留言,一次按太多...OTZ

Old Siao iT邦研究生 1 級‧ 2015-01-12 12:12:20 檢舉

那我也只能細細一個個回答了~
Sorry,先前沒看到通知,晚回答了
嘗試看看吧

0
Damocles
iT邦新手 5 級 ‧ 2018-07-13 13:58:31

您好,我照著上面的步驟執行過後,確定每一步都有做到,重啟xampp後
得到的錯誤訊息是Call to undefined function sqlsrv_connect()
環境:XAMPP3.2.2
OS:WIN7 64bits

調閱phpinfo之後發現https://ithelp.ithome.com.tw/upload/images/20180713/20103670cHdfIqwSuj.jpg
請問還有什麼地方有疑漏的嗎?

後來我稍微查了一下,
發現板主說的Microsoft Drivers 3.0 for PHP for SQL Server
要安裝SQLSRV32版本的56(要記得連帶php.ini裡面的設定也要改),
之後還要安裝ODBC Driver
之後才可以正常連線

Old Siao iT邦研究生 1 級‧ 2018-07-18 08:49:34 檢舉

是的,不好意思,晚上來看問題了
感謝您提供的問題語回答,受益了

我要留言

立即登入留言