PHP連接MSSQL2008/2005數(shù)據(jù)庫與以往的連接mssql2000是不一樣的,連接mssql2008/2005是需要自己添加PHP對MSSQL連接的驅(qū)動擴展了,而我們常用的hp.ini中的extension=php_mssql.dll擴展只適用連接于MSSQL2000哦,下面我們就來看看解決辦法.
1.下載擴展
(1)去官方下載一個SQL Server Driver for PHP的擴展包,我是在這里下載的http://www.microsoft.com/en-us/download/details.aspx?id=20098【記得下載后好像是要先安裝然后再解壓】
(2)您也可以直接從本站下載,我之前下載的,來源于microsoft官方.
將下載下來的rar文件解壓后你就會得到一堆的.dll文件,下載驅(qū)動程序,下載后安裝釋放程序,里面有以下文件:
- php_pdo_sqlsrv_52_nts.dll
- php_pdo_sqlsrv_52_ts.dll
- php_pdo_sqlsrv_53_nts_vc6.dll
- php_pdo_sqlsrv_53_nts_vc9.dll
- php_pdo_sqlsrv_53_ts_vc6.dll
- php_pdo_sqlsrv_53_ts_vc9.dll
- php_sqlsrv_52_nts.dll
- php_sqlsrv_52_ts.dll
- php_sqlsrv_53_nts_vc6.dll
- php_sqlsrv_53_nts_vc9.dll
- php_sqlsrv_53_ts_vc6.dll
- php_sqlsrv_53_ts_vc9.dll
SQLServerDriverForPHP.chm,手冊,英文夠好的話,可以看看,嘿嘿.
SQLServerDriverForPHP_License.rtf
SQLServerDriverForPHP_Readme.htm,自述文件.
2.添加擴展
根據(jù)(vc6/vc9)需要選擇擴展,我的環(huán)境是WAMP(php5.2.6/apache2.2.8),我選用的是php_sqlsrv_52_ts_vc6.dll,php_pdo_sqlsrv_52_ts_vc6.dll這兩個文件,復制到wamp安裝目錄下的ext目錄下,我的ext目錄是在wamp/bin/php/php5.2.6/ext/
3.配置php.ini
1)在php.ini的Dynamic Extensions中添加如下兩條擴展:
extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
2)將;extension=php_pdo.dll前面的;去掉,開啟pdo連接擴展.
3)重新啟動apache
4.連接數(shù)據(jù)庫(pdo連接),代碼如下:
- <?php
- $servern="SFKFK27EL8FJ\SQLTRY";
- $coninfo=array("Database"=>"try2","UID"=>"sa","PWD"=>"123");
- $conn=sqlsrv_connect($servern,$coninfo) or die ("連接失敗!");
- $val=sqlsrv_query($conn,"select * from usertable");
- while($row=sqlsrv_fetch_array($val)){
- echo $row[1]."<br />";
- } //開源軟件:Vevb.com
- sqlsrv_close($conn);
- ?>
5.例子 mssql_lib.php 代碼如下:
- <?php
- class DB {
- var $con = null;
- function __construct($dbhost,$dbuser,$dbpass,$dbname) {
- $connectionInfo = array("UID"=>$dbuser,"PWD"=>$dbpass,"Database"=>$dbname);
- $this->con = sqlsrv_connect($dbhost,$connectionInfo);
- }
- function query($sql){
- $result = sqlsrv_query($this->con, $sql);
- }
- function getRow($sql){
- $result = sqlsrv_query($this->con, $sql);
- $arr = array();
- while($row = sqlsrv_fetch_array($result))
- {
- $arr[] = $row;
- }
- return $arr[0];
- }
- function getAll($sql){
- $result = sqlsrv_query($this->con, $sql);
- $arr = array();
- while($row = sqlsrv_fetch_array($result))
- {
- $arr[] = $row;
- }
- return $arr;
- }
- function __destruct() {
- unset($con);
- }
- }
- test.php
- //簡單調(diào)用
- $db = new DB(DB_HOST, DB_USER, DB_PASS, DB_NAME);
- $sql = "select * from crm_order_batch where (status=0 or status is null) and lock_id is not null ";
- $orders_add_list = $db->getAll($sql);
- ?>
新聞熱點
疑難解答