mssql是sqlserver 的簡稱。這個是微軟的重型數據庫。
創新互聯建站于2013年開始,先為上海等服務建站,上海等地企業,進行企業商務咨詢服務。為上海企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
我們查看php是否支持某項功能可以打開配置文件,查看是否有該驅動即可。
實際上php所有版本都支持sql server 。
只需要打開php的配置文件,將以下代碼打開注釋即可。
肯定可以啊 你買的是那種虛擬主機吧 估計是php+Mysql 的模式,他不提供sqlserver 當然就連不上咯。
1:PHP5.2.x本身有個php_mssql.dll的擴展用來連接Sql server,但是這個dll只是用來連接低版本 Sql server的(2000以下版本),在Sql server 2005及以上版本無法使用mssql_connect連接到數據庫。
2:php5.3.x不再支持php_mssql.dll 拓展庫了,及時使用php5.2.x中的php_mssql.dll也無法使用。 微軟專門為PHP出了個SQL Server的擴展(Windows版本的),對于Windows下使用php開發SQL Server應用來說,這個擴展有利于利用SQL Server來開發php平臺連接sql server數據庫管理系統。
一、php5.3以下的版本連接sql server
5.3以下的版本擴展里面自帶一個php_mssql.dll;接數據庫的擴展,可以利用這個擴展鏈接數據庫,(只限于鏈接低版本數據庫)。
具體的步驟如下:
1:首先安裝sql server,超級不好安裝,我之前安裝的是2008版本的,Windows過期后就不能用了,然后重裝還裝不上,最后重裝系統才裝上
2:確定SQL裝的時候用的是混合認證模式,或SQL驗證模式,然后打開php的配置文件(php.ini),開啟mssql擴展 (extension=php_pdo_mssql.dll前面的分號去掉)并且需要把mssql.secure_connection = On 重啟后生效。
如果比較順利的話已經可以連接數據庫了,如果連不上就需要繼續低下的配置:
3: 檢查ntwdblib文件的版本(php/下面和Apache/下面)下載正確的版本的 ntwdblib.dll(2000.80.194.0)覆蓋現有的DLL文件,(把ntwdblib.dll,php_mssql.dll 復制到system32目錄中也可以)ntwdblib.dll 用于PHP連接MSSQL2005或2008的驅動文件。
4:測試連接:mssql_connect('localhost,1433', '用戶名', '密碼');
二、php5.3+連接sql server
其 實5.3以下的php版本已經很少用了,況且安全性和兼容性都不好,所以高版本的php還是比較常見的。實踐證明低版本的php連接數據庫成功率比較低 (2005以上的版本幾乎不能使用),推薦使用php5.3+ php使用微軟專門的擴展 SQLSRV 來連接sqlserver數據庫
步驟如下:
1:先到微軟網站下載 SQL Server Driver for PHP 是一個自解壓的 EXE文件,解壓縮后你會得到這么幾個文件:
其中的52、53表示就是php的5.2.x和5.3.x 版本,選擇跟你php版本相匹配的;vc6或vc9的選擇要看你使用的是什么web服務器軟件,如果使用的是IIS那就選擇vc9的,如果是Apache 則選擇vc6的,ts和nts的選擇要看你安裝的php版本是線程安全版的還是非線程安全版,ts是線程安全,nts是非線程安全。
如果不知道可以在phpinfo里看Zend Extension Build這個屬性如下圖:
2:將擴展拷貝到拷到php/ext目錄下,在php.ini文件,添加一下代碼:
extension=在ext下的pdo擴展(用于pdo)
extension=在ext下的擴展
3:重啟服務器,打開phpinfo();看到以下狀態就證明添加擴展成功,
4:連接測試:
?php ? $serverName = "(local)"; ? $connectionInfo = array("UID"="sa","PWD"="admin","Database"="db_online"); ? $conn = sqlsrv_connect( $serverName, $connectionInfo); ? if( $conn ){ ? ? ?echo "Connection established.\n"; ? }else{ ? ? ?echo "Connection could not be established.\n"; ? ? ?die( var_dump(sqlsrv_errors())); ? } ? sqlsrv_close( $conn); ?
注意這里的連接不是用mssql_connect而是用sqlsrv_connect,在這個版本中,還有幾個函數:
這個擴展為php新增了一系列sqlsrv_開頭的函數,常用的如下:
sqlsrv_connect
sqlsrv_close
sqlsrv_commit
sqlsrv_errors
sqlsrv_fetch
sqlsrv_fetch_array
sqlsrv_fetch_metadata
sqlsrv_num_rows
sqlsrv_query
sqlsrv_rollback
sqlsrv_rows_affected
. . .
另外注意的是,如果使用這個擴展連接Sql server 2005以及以上版本的sql server(如sql server 2008),你還需要在機器上先安裝 SQL Server Native Client
不然會出現如下錯誤:
array
0 =array
0 =string'IMSSP'(length=5)
'SQLSTATE' =string'IMSSP'(length=5)
1 =int-49
'code' =int-49
2 =string'This extension requires the Microsoft SQL Server 2012 Native Client. Access the ? ? following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86:
'
(length=216)
'message' =string'This extension requires the Microsoft SQL Server 2008 Native Client. Access the following URL to download the Microsoft SQL Server 2008 Native Client ODBC driver for x86:
'
(length=216)
1 =array
0 =string'IM002'(length=5)
'SQLSTATE' =string'IM002'(length=5)
1 =int0
'code' =int0
2 =string'[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱并且未指定默認驅動程序'(length=71)
'message' =string'[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱并且未指定默認驅動程序'(length=71)
解決方法:需要安裝SQL Server 2008 Native Client ODBC Driver,下載安裝文件sqlncli.msi,安裝后就可以了。
網上有 其實連接MSSQL 有很多方法
第一種 到微軟下載連接驅動
第二種 用ODBC 開放數據庫連接
php.ini文件中;extension=php_pdo_mssql.dll ;extension=php_pdo_odbc.dll 前面的分號去掉,對應的使哪種方式連接mssql。注意要重啟服務使其生效。
一、建立連接
1、odbc
首先,在php程序所在的服務器設置odbc。這里32位和64位操作系統有區別。32位的從控制面板中管理工具中的數據源(odbc)直接建立就可以了,64位的要運行C:\Windows\SysWOW64\odbcad32.exe從這里面設置。注意:上面只的是數據庫服務器為32為的,數據源設置服務器為32位和64位兩種的情況。只要兩個服務器建立的數據源位數一致就好。
下面是odbc建立連接代碼。
復制代碼 代碼如下:
$con = odbc_connect('odbc名稱','用戶名','密碼');2、連接mssql2000
復制代碼 代碼如下:
$con = mssql_connect('數據庫地址','用戶名','密碼');3、連接mssql2008
復制代碼 代碼如下:
$connectionInfo = array("UID"=用戶名,"PWD"=密碼,"Database"="數據庫名稱");$con = sqlsrv_connect( 數據庫地址,$connectionInfo);二、輸入查詢代碼
這個都一樣,可以直接寫入,也可以從mssql中驗證好后復制過來。簡單點說就是把一個sql語句賦值給一個變量。
類似下面代碼
復制代碼 代碼如下:
$query = "SELECT top 12 * 數據庫名稱 order by id desc";三、建立查詢并取出數據
1、odbc
復制代碼 代碼如下:
$result = odbc_do($con,$query);
while(odbc_fetch_row($result))
{
$變量名稱 = odbc_result($result, "字段名稱");}
2、連接mssql2000
復制代碼 代碼如下:
$result = mssql_query($con, $query);
while($row =mssql_fetch_array($result))
{
$變量名稱 = $row["字段名稱"];
}
3、連接mssql2008
復制代碼 代碼如下:
$result = sqlsrv_query($con, $query);
while($row = sqlsrv_fetch_array($result)){
$變量名稱 = $row["字段名稱"];
}
在php5.3及以后的版本中不附帶sqlsrv庫了。所以要從微軟這里下載。
四、關閉連接
這個沒有什么區別,分別是odbc_close();和mssql_close()和sqlsrv_close();最后體會:php連接mssql比連接mssql的函數少了一些,但是也夠用了。具體函數可以參考php官方手冊
常規方式
常規方式就是按部就班的讀取文件了。其余的話和上述方案一致。
// 讀取配置文件內容
$handle = fopen("filepath", "r"); ? ? ? ? ? ?$content = fread($handle, filesize("filepath"));123
PHP解析XML
上述兩種讀取文件,其實都是為了PHP解析XML來做準備的。關于PHP解析XML的方式的博客有很多。方式也有很多,像simplexml,XMLReader,DOM啦等等。但是對于比較小型的xml配置文件,simplexml就足夠了。
配置文件
?xml version="1.0" encoding="UTF-8" ?mysql
!-- 為防止出現意外,請按照此標準順序書寫.其實也無所謂了 --
hostlocalhost/host
userroot/user
password123456/password
dbtest/db
port3306/port/mysql12345678910
解析
?php/**
* 作為解析XML配置文件必備工具
*/class XMLUtil {
public static $dbconfigpath = "./db.config.xml"; ? ?public static function getDBConfiguration() {
$dbconfig = array (); ? ? ? ?try { ? ? ? ? ? ?// 讀取配置文件內容
$handle = fopen(self::$dbconfigpath, "r"); ? ? ? ? ? ?$content = fread($handle, filesize(self::$dbconfigpath)); ? ? ? ? ? ?// 獲取xml文檔根節點,進而獲取相關的數據庫信息
$mysql = simplexml_load_string($content); ? ? ? ? ? ?// 將獲取到的xml節點信息賦值給關聯數組,方便接下來的方法調用
$dbconfig['host'] = $mysql-host; ? ? ? ? ? ?$dbconfig['user'] = $mysql-user; ? ? ? ? ? ?$dbconfig['password'] = $mysql-password; ? ? ? ? ? ?$dbconfig['db'] = $mysql-db; ? ? ? ? ? ?$dbconfig['port'] = $mysql-port; ? ? ? ? ? ?// 將配置信息以關聯數組的形式返回
return $dbconfig;
} catch ( Exception $e ) { ? ? ? ? ? ?throw new RuntimeException ( "mark讀取數據庫配置文件信息出錯!/markbr /" );
} ? ? ? ?return $dbconfig;
}
}1234567891011121314151617181920212223242526272829
數據庫連接池
對于PHP程序而言,優化永無止境。而數據庫連接池就在一定程度上起到了優化的作用。其使得對用戶的每一個請求而言,無需每次都像數據庫申請鏈接資源。而是通過已存在的數據庫連接池中的鏈接來返回,從時間上,效率上,都是一個大大的提升。
于是,這里簡單的模擬了一下數據庫連接池的實現。核心在于維護一個“池”。
從池子中取,用畢,歸還給池子。
?php/**x
* ?PHP中的數據庫 工具類設計
* ?郭璞
* ?2016年12月23日
*
**/class DbHelper { ? ?private $dbconfig; ? ?private $dbpool; ? ?public $poolsize; ? ?public function __construct($poolsize = 20) { ? ? ? ?if (! file_exists ( "./utils.php" )) { ? ? ? ? ? ?throw new RuntimeException ( "markutils.php文件丟失,無法進行配置文件的初始化操作!/markbr /" );
}else {
require './utils.php';
} ? ? ? ?// 初始化 配置文件信息
$this-dbconfig = XMLUtil::getDBConfiguration (); ? ? ? ?// 準備好數據庫連接池“偽隊列”
$this-poolsize = $poolsize;
$this-dbpool = array (); ? ? ? ?for($index = 1; $index = $this-poolsize; $index ++) {
$conn = mysqli_connect ( $this-dbconfig ['host'], $this-dbconfig ['user'], $this-dbconfig ['password'], $this-dbconfig ['db'] ) or die ( "mark連接數據庫失??!/markbr /" );
array_push ( $this-dbpool, $conn );
}
} ? ?/**
* 從數據庫連接池中獲取一個數據庫鏈接資源
*
* @throws ErrorException
* @return mixed
*/
public function getConn() { ? ? ? ?if (count ( $this-dbpool ) = 0) { ? ? ? ? ? ?throw new ErrorException ( "mark數據庫連接池中已無鏈接資源,請稍后重試!/mark" );
} else { ? ? ? ? ? ?return array_pop ( $this-dbpool );
}
} ? ?/**
* 將用完的數據庫鏈接資源放回到數據庫連接池
*
* @param unknown $conn
* @throws ErrorException
*/
public function release($conn) { ? ? ? ?if (count ( $this-dbpool ) = $this-poolsize) { ? ? ? ? ? ?throw new ErrorException ( "mark數據庫連接池已滿/markbr /" );
} else {
array_push ( $this-dbpool, $conn );
}
}
}
本文名稱:php能連接微軟數據庫,php能連接微軟數據庫嗎
分享網址:http://m.kartarina.com/article10/heiddo.html
成都網站建設公司_創新互聯,為您提供服務器托管、動態網站、企業網站制作、網站排名、響應式網站、標簽優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯