在研究ezSQL的時候就看到了mssql_connect()等一些php提供的串連MSSQL的函數,本以為php這個開源的風靡世界的程式設計語言對串連微軟的資料應該是不在話下的,但是到真正執行的時候,才發現困難多多
在研究ezSQL的時候就看到了mssql_connect()等一些php提供的串連MSSQL的函數,本以為php這個開源的風靡世界的程式設計語言對串連微軟的資料應該是不在話下的,但是到真正執行的時候,才發現困難多多。
一開始我下載的php版本是5.93的,下載下來添加環境變數等等搞了半天后,phpinfo()這個函數終於成功的運行在瀏覽器中了。然後當我在滿世界的找php_mssql.dll,才發現在5.3以及以上版本的php中已經不是原生態的支援mssql了。
好不容易找到了微軟Microsoft Drivers 3.0 for PHP for SQL Server,心想微軟的東西應該做的可以,卻無奈的發現SQLSRV30.EXE沒有辦法運行:“SQLSRV30.EXE 不是有效win32程式”。
在網上搜尋了半天,總結了以下一些可行的辦法,但是在這之前你需要:
配置MICROSOFT SQL SERVER
1、下載並安裝sql server。現在這個版本就比較多了從2000 到2008不等,找一個你自己下載吧。
2、開放tcp/ip串連方式,使得資料庫能夠遠端存取。SQL Server Configuration Manager -> Network Configuration -> Protocols -> TCP/IP enabled
3、開啟資料管理介面,添加使用者和資料庫。
4、安裝php和配置IIS服務。
5、開啟php所在檔案夾裡面的 php.ini檔案,並添加:
mssql.textlimit = 20971520mssql.textsize = 20971520
做完了這些之後,你可以按照下面三種方法來串連資料庫了:
使用php內建的方法串連MSSQL(5.3及以後版本不適用)
確保php ext擴充庫檔案夾下有php_mssql.dll,然後在PHP.ini中的配置中,將
;extension=php_mssql.dll
前面的“;”去掉。
然後你可以測試連接了:
//串連MSSQL$conn=mssql_connect("執行個體名或者伺服器IP","使用者名稱","密碼");//測試連接if($conn){ echo "串連成功";}
Microsoft Drivers for SQL Server for PHP
2008年7月微軟發布了一個新的為php串連SQL Server的驅動,它改善了php內建的串連MSSQL函數的一些缺點,並且是以php擴充外掛程式的形式開發的,通過它你可以用php輕鬆的讀寫微軟的資料庫了。
如果你伺服器使用的是IIS的話,那麼就一定要從這裡去下載:
http://php.iis.net/
因為從上述連結進去其實是微軟整合的網路開發平台,只提供線上安裝,但是很方便的整合了PDO外掛程式和php,當然還有微軟的其它一些開發功能,但是如果你沒需要,你可以不裝了,那些是在visual studio中的。
但是如果你用的是 Apache的話,你可以去這裡直接下載這個外掛程式了,它其實是一個解壓檔案,解壓出來幾個DLL檔案,具體操作如下:
1)下載驅動包:http://www.microsoft.com/en-us/download/details.aspx?id=20098.
2)將DLL檔案解壓到 PHP extension_dir 目錄,如果出現說SQLSRV30.EXE 不是有效win32程式,可能是缺少某些庫,可能是vc10,也有可能是沒有用administrator許可權運行。
extension_dir = “C:\PHP\ext”
3)在php.ini設定檔內引用相應的動態連結程式庫檔案
extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
extension=php_pdo.dll
其中的52、53表示就是php的5.2.x和5.3.x 版本,選擇跟你php版本相匹配的;
選擇vc6或vc9的主要看你使用的是什麼web伺服器軟體,如果使用的是IIS那就選擇vc9的,如果是Apache則選擇vc6的。
至於ts和nts,就要看你安裝的php版本是安全執行緒版的還是非安全執行緒版,ts是安全執行緒,nts是非安全執行緒。
4)重啟Apache
5)串連資料庫
測試連接代碼:
<?php//本地測試的服務名"(local)";//使用sql server身分識別驗證,參數使用數組的形式,一次是使用者名稱,密碼,資料庫名//如果你使用的是windows身分識別驗證,那麼可以去掉使用者名稱和密碼$connectionInfo = array( "UID"=>"root", "PWD"=>"root2010", "Database"=>"master");$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn ){ echo "Connection established.\n";}else{ echo "Connection could not be established.\n"; die( print_r( sqlsrv_errors(), true));} ?>
在windows下使用FreeTDS
什麼是FreeTDS? FreeTDS其實就是一個開源(或者可以說成自由)的C程式庫,它可以實現在Linux系統下訪問操作微軟的SQL資料庫。可以用在Sybase的db-lib或者ct-lib庫,在裡面也包含了一個ODBC的庫。允許許多應用軟體串連到Sybase或者微軟的SQL伺服器。FreeTDS是以源碼的現實發布的,正因為是這樣,所以它幾乎可以在任何系統中進行編譯安裝。
如如你的伺服器是Windows系統, 那麼你應該使用 php_dblib.dll。(more information on Using FreeTDS for Unix.)
通常我們可以在這個網站上找到這些DLL檔案- Frank Kromann's site, 但是它基本上很多都已經過時了,並且會引發很多的問題,因此我們推薦windows下使用PHP 5.2.x版本,並且看看下面的建議 :
1. 按照下面的表格來下載 php_dblib.dll 並且將其儲存到 /PHP/ext 檔案夾下面.
| PHP version |
Thread Safe |
FreeTDS version |
Download URL |
| PHP 5.2.x (vc6) |
Yes |
0.82 + 20090302 patches |
Download! |
| No |
0.82 + 20090302 patches |
Download! |
| PHP 5.3.x (vc9) |
Yes |
0.82 + 20090904 patches |
Download! |
| No |
0.82 + 20090904 patches |
Download! |
| PHP 5.4.x (vc9) |
Yes |
0.82 + 20110906 patches |
Download! FTP Download! |
| No |
0.82 + 20110906 patches |
Download! FTP Download! |
2、 FreeTDS 需要安裝 .NET Framework v1.1 ,你可以到微軟的網站去下載。或者你去Frank's site 下載需要的DLL檔案,並儲存到你的/PHP根目錄下面。
3、在php設定檔 /PHP/php.ini 中添加:
extension=php_dblib.dll
4、當php引擎啟動FreeTDS模組的時候需要傳遞一些資訊,使得FreeTDS能夠串連到它的預設的資料庫。因此它的需要在freetds.conf中定義資料庫連接的基本資料,該檔案在其根目錄下,可以按照你的情況來進行修改:
[global]
host = xxx.xxx.xxx.xxx (host name or ip of the MSSQL server)
port = 1433
client charset = UTF-8
tds version = 8.0
text size = 20971520
5、建立config.php文檔來定義資料庫連接參數:
$CFG->dbtype = 'mssql'; // Required$CFG->dbhost = 'localhost'; // assuming MS SQL is on the same server, otherwise use an IP$CFG->dbname = 'moodle'; // or whatever you called the database you created$CFG->dbuser = 'yourusername'; // I usually use the 'sa' account (dbowner perms are enough)$CFG->dbpass = 'yourpassword';$CFG->dbpersist = false;$CFG->prefix = 'mdl_'; //Prefix, you can change it, but NEVER leave it blank.
6、 重啟你的網站,如果還是沒有串連到你的資料庫的話,在 /PHP/php.ini檔案中將display_startup_errors改為"On",當你解決了這些問題之後再將錯誤報表改為“Off”;
7、測試你的網站,建立test.php檔案,代碼如下,訪問http://localhost/test.php進行測試
<?php$link = mssql_connect('localhost', 'db_user', 'db_password');if(!$link) {echo'Could not connect';die('Could not connect: ' . mssql_error());}echo'Successful connection';mssql_close($link);?>
以上就是本文的全部內容,希望對大家的學習有所協助。