首頁  >  文章  >  後端開發  >  php系統不支援mssql問題的解決方法

php系統不支援mssql問題的解決方法

藏色散人
藏色散人原創
2021-09-11 10:16:341856瀏覽

php不支援mssql的解決方法:1、下載「SQLSRV20.EXE」;2、將檔案解壓縮到php的擴充資料夾ext下;3、修改php.ini檔案;4、儲存重新啟動apache即可。

php系統不支援mssql問題的解決方法

本文操作環境:windows7系統、php5.3版,DELL G3電腦

php系統不支援mssql問題的解決方法、php5.3不能連接mssql資料庫的解決方法

本文實例講述了php5.3不能連接mssql資料庫的解決方法。

分析如下:

自從php5.3之後系統就不支援mssql_connect這個函數連接了,以前我也講可以使用com介面來實作,現在我再介紹解決php5.3不能連接mssql資料庫另一方法.

windows系統下,PHP5.3以上的版本已經不支援mssql擴充.

#首先http://msdn.microsoft.com/en-us/ sqlserver/ff657782.aspx 點選get it 下載SQLSRV20.EXE。

將檔案解壓縮到php的擴充資料夾ext下,開啟php.ini在結尾新增:

程式碼如下:

[PHP_PDO_SQLSRV] 
extension=php_pdo_sqlsrv_53_nts_vc6.dll 
[PHP_SQLSRV] 
extension=php_sqlsrv_53_nts_vc6.dll

儲存後重啟apache即可,附上簡單的php連線的例子,程式碼如下:

程式碼如下:

<?php 
$serverName = "(127.0.0.1)"; 
$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)); 
} 
?>

我使用的是wamp5.1整合安裝套件,在windows server 2008上面做的測試,php5.4以上版本測試沒有成功.

如果使用這個擴充功能連接Sql server 2005以上版本的sql server(如sql server 2008),你還需要在機器上先安裝SQL Server Native Client :http://download .microsoft.com/download/0/E/6/0E67502A-22B4-4C47-92D3-0D223F117190/sqlncli.msi

這個擴充功能為php新增了一系列sqlsrv_開頭的函數,函數參考如下:

程式碼如下:

sqlsrv_begin_transaction 
sqlsrv_cancel 
sqlsrv_client_info 
sqlsrv_close 
sqlsrv_commit 
sqlsrv_configure 
sqlsrv_connect 
sqlsrv_errors 
sqlsrv_execute 
sqlsrv_fetch 
sqlsrv_fetch_array 
sqlsrv_fetch_object 
sqlsrv_fetch_metadata 
sqlsrv_free_stmt 
sqlsrv_get_config 
sqlsrv_get_field 
sqlsrv_has_rows 
sqlsrv_next_result 
sqlsrv_num_fields 
sqlsrv_num_rows 
sqlsrv_prepare 
sqlsrv_query 
sqlsrv_rollback 
sqlsrv_rows_affected 
sqlsrv_send_stream_data 
sqlsrv_server_info

更多詳細的說明可以在剛才的自解壓縮的檔案中有個SQLServerDriverForPHP.chm 幫助文件中可以找到開啟後點擊API Reference節點.

另外看一種odb連線方式,程式碼如下:

程式碼如下:

$dbhost = &#39;&#39;; 
$dbuser = &#39;&#39;; //你的mssql用户名 
$dbpass = &#39;&#39;; //你的mssql密码 
$dbname = &#39;&#39;; //你的mssql库名 
$connect=odbc_connect("Driver={SQL Server};Server=$dbhost;Database=$dbname","$dbuser","$dbpass"); 
$sql="select * from content"; 
$exec=odbc_exec($connect,$sql); 
while($row = (odbc_fetch_array($exec))) 
{ 
$row[&#39;id&#39;]   //?取字段值 
… 
}

推薦學習:《PHP影片教學

相關介紹:

一、php5.3透過PDO成功連接MSSQL的步驟簡單整理如下:

1、下載microsoft drivers  for php for sql server(目前有2.0 3.0版本,分別又分有ts和nts版,可透過phpinfo()中的Thread Safety:enable確認是ts,詳見驅動自帶手冊)

2、複製驅動至php資料夾的ext文件夾後,修改php.ini擴展extension=php_pdo_sqlsrv_53_ts_vc6.dll

3、下載Microsoft SQL Server 2008 R2 Native Client安裝

測試代碼:

<?php
  try {
     $hostname = "192.168.1.100"; 
     $dbname = "Northwind";
     $username = "sa"; 
     $pwd = "pwd100"; 
     $dsn="sqlsrv:Server=$hostname;database=$dbname";
     
    $conn = new PDO ($dsn,$username,$pwd);
    $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    echo "mssql database connnection sucessed!";
   } catch (PDOException $e) {
     echo "Failed to get DB handle: " . $e->getMessage() . "\n";
     exit;
   }
?>

二、windows系統下,PHP5.3以上的版本已經不支援mssql擴展,所以如果你需要和sql server通訊需要到http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx自行下載微軟提供的The SQL Server Driver for PHP。這是一個自解壓縮文件,解壓縮後會得到以下幾個文件:

php_sqlsrv_52_nts_vc6.dll
php_sqlsrv_52_ts_vc6.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
php_sqlsrv_license.rtf
SQLServerDriverForPHP.chm
SQLServerDriverForPHP_Readme.htm

其中,52,53表示PHP的5.2.X和5.3.X的版本;nts表示非線和安全,ts表示執行緒安全性;vc6表示使用Apache作為Web Server,vc9表示使用IIS作為Web Server。

根據您的配置,將對應的DLL檔案拷貝到php安裝目錄的ext資料夾中,接下來開啟php.ini,加入下列語句開啟php_sqlsrv和php_pdo_sqlsrv擴充:

— —————————————————–

[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_53_ts_vc6.dll
[PHP_SQLSRV]
extension=php_sqlsrv_53_ts_vc6.dll

—————————————————

#這裡的53表示的是php5.3,如果你的是5.2版,就改成52,如果你的PHP版本是線程安全的,那麼你的PHP安裝目錄下應該有一個php5ts.dll,與這裡的兩行語句對應,如果是php5nts.dll,那麼上面的語句應該是:

—————————————————————-

[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_53_nts_vc6.dll
[PHP_SQLSRV]
extension=php_sqlsrv_53_nts_vc6.dll

—————————————————-

壓縮包裡有各個版本對於的dll文件,大家可以去仔細核對。

開啟擴充功能後,重新啟動apache,這樣就可以連接sqlserver了,但還有一點要注意,如果你沒有安裝Microsoft SQL Server 2008 R2 Native Client,你必須去http://msdn.microsoft.com /en-us/library/cc296170(SQL.90).aspx下載安裝,因為微軟的這個擴充包需要這個支援。

一切妥當之後,就可以寫php程式碼了,如果你下載了The SQL Server Driver for PHP,那麼在解壓縮後的資料夾裡有一個幫助文檔,你可以很容易的找到範例,在這裡站長介紹一個簡單的例子:

<?php
//本地测试的服务名
$serverName = “(127.0.0.1)”;
//使用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));
}
?>

如果連線不成功,重啟sql server再試。

以上是php系統不支援mssql問題的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn