php支持mssql
注意要重啟服務使其生效。 一、建立連接1、odbc首先,在php程序所在的伺服器設置odbc。這里32位和64位操作系統有區別。32位的從控制面板中管理工具中的數據源(odbc)直接建立就可以了,64位的要運行C:WindowsSysWOW64odbcad32.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庫了。所以要從微軟這里下載。 四、關閉連接
2. php-pdo 用 ODBC 連接 MSSQLSERVER Y也是怪麻煩的:TCP Provider: Error code 0x2746
在探索如何使用 PHP-PDO 連接 MSSQLSERVER 時,我經歷了一系列困擾。最初嘗試時,我遇到一個具體的錯誤提示,SQLSTATE[08001] SQLDriverConnect: 10054,其背後是使用 Microsoft ODBC Driver 17 的 TCP Provider 錯誤代碼 0x2746。我逐一檢查並調整,包括在配置文件中使用正確的ODBC驅動絕對路徑,確保等號前後無空格等,均未解決問題。甚至更換到Odbc 驅動的較新版本,並嘗試使用 PYTHON 的 PYMSSQL 作為對照,排除了與防火牆配置相關的問題,但問題依然存在。我查看了一些論壇和文檔,了解到 SSL 相關配置可能與問題相關聯,然而在對 /etc/ssl/openssl.cnf 文件進行調整後,問題依舊。
在嘗試了微軟提供的示例代碼仍然無效後,我開始檢查是否埠號配置錯誤以及操作系統版本是否兼容,但問題在於即使在 Linux 環境下,我仍舊無法連接到 MSSQLSERVER。更復雜的是,我發現 SSL 配置是部分可能的罪魁禍首,但從調整 SSL 相關配置到降低 TLS 版本後,連接問題仍然存在。這讓我開始懷疑,問題可能與當前版本的 PHP-PDO 不兼容或配置中的某個細節尚未被發現。
我嘗試進一步調整,但發現即使採用最新版本的 ODBC 驅動,連接問題仍然未解決。查看錯誤信息時,發現提示與使用 MariaDB 或其他資料庫連接情況大相徑庭,表明問題可能與資料庫服務端相關。嘗試連接 10.5.16-MariaDB 資料庫時,我發現可以成功建立連接。這讓我開始考慮是否應嘗試其他 ODBC 介面模式,如 ODBC unified,但經過驗證,這個方法在當前環境中並不適用。
問題的解決過程中,我意識到最終答案可能並非技術層面的缺陷,而可能是版本不兼容或配置細節上的疏漏。在無法解決問題後,我決定求助於專業的資料庫管理工具,以輔助進行故障排查和調試。我嘗試了微軟自己的 GUI 工具,發現連接問題同樣無法解決,這讓我意識到了連接問題可能與平台或服務配置緊密相關,而非單純的編程問題。
整個探究過程展示了在資料庫連接中,可能面臨的各種復雜性,從 ODBC 驅動配置到 SSL 問題,再到平台和版本兼容性。在這個過程中,我發現雖然 PHP-PDO 是一個強大的連接庫,但對於特定的資料庫系統如 MSSQLSERVER,仍然存在一定的挑戰。解決這些問題需要細致的錯誤分析、廣泛的資源利用和持續的實驗過程。在這個探究旅程中,我深刻體驗到了開發者在維護跨平台系統時所面臨的復雜性和挑戰。
3. 5.3不支持 mssql ,所有要用到以前的版本,官網好像只有5.3及以上版本;要用php5.3必須要用sqlsrv.dll嗎
如果你需要和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再試。
4. php可以支持目前主流的資料庫
php支持的資料庫有很多噢,下面列舉一下!
MySQL
MySQL 是最流行的關系型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關系資料庫管理系統)應用軟體之一。
MsSql
ms SQL是指微軟的SQLServer資料庫伺服器,它是一個資料庫平台,提供資料庫的從伺服器到終端的完整的解決方案,其中資料庫伺服器部分,是一個資料庫管理系統,用於建立、使用和維護資料庫。
Oracle
oracle是甲骨文公司的一款關系資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。可以說Oracle資料庫系統是目前世界上流行的關系資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的、適應高吞吐量的資料庫方案。
Access
Access是由微軟發布的關系資料庫管理系統。它結合了 MicrosoftJet Database Engine 和 圖形用戶界面兩項特點,是 Microsoft Office 的系統程序之一。
PostgreSQL
PostgreSQL是一種特性非常齊全的自由軟體的對象-關系型資料庫管理系統(ORDBMS),是以加州大學計算機系開發的POSTGRES,4.2版本為基礎的對象關系型資料庫管理系統。POSTGRES的許多領先概念只是在比較遲的時候才出現在商業網站資料庫中。
InterBase
InterBase是一種關系數據管理系統(Relational database management system RDBMS),它提供了在單機或多用戶環境中的快速數據處理及共享的工具。InterBase的核心是提供透明的多機種支持的網路運行伺服器技術。InterBase是可以在Windows 95、Windows NT、Novell NetWare及多種UNIX操作系統上運行的工具。
CUBRID
CUBRID是一個全面開源,且完全免費的關系資料庫管理系統。
dBase
dBase是第一個在個人電腦上被廣泛使用的單機版資料庫系統。
Firebird/InterBase
Firebird特性介紹firebird是一個全功能的,強大高效的,輕量級,免維護的資料庫。
IBM DB2
IBM DB2 是美國IBM公司開發的一套關系型資料庫管理系統
Informix
Informix是IBM公司出品的關系資料庫管理系統(RDBMS)家族。
MaxDB
MaxDB是一種企業級資料庫管理系統。
MongoDB
MongoDB 是一個基於分布式文件存儲的資料庫。
mSQL
mSQL(mini SQL)是一個單用戶資料庫管理系統,個人使用免費,商業使用收費。由於它的短小精悍,使其開發的應用系統特別受到互聯網用戶青睞。
SQLite
SQLite,是一款輕型的資料庫,是遵守ACID的關系型資料庫管理系統,它包含在一個相對小的C庫中。
SQLSRV
SQL Server(SQLSRV )是由Microsoft開發和推廣的關系資料庫管理系統(RDBMS)。
Sybase
美國Sybase公司研製的一種關系型資料庫系統,是一種典型的UNIX或WindowsNT平台上客戶機/伺服器環境下的大型資料庫系統。
tokyo_tyrant
一個可持久化數據的,好處是速度不錯,而且大至兼容Memcached的文本協議,客戶端可以繼續使用SpyMemcached。
希望對你有幫助,謝謝採納!
5. 求助thinkPHP3.2.2連接mssql2014提示系統不支持sqlsrv
首先 sql server 2014 安裝沒啥說的 鏈接信息自己設置
php 版本 :5.5.12
sqlsrv 驅動 微軟提供了 3.0 和3.1 版本 3.0 對應php 5.4 3.1對應著5.5
PS: win7 64位系統滑薯
下載sql server 驅動
Version 3.0 supports PHP 5.4
Version 3.1 supports PHP 5.5
注意 這里下載的官方5.5驅動 是不支持64位環境的 我開始用拆讓沖WAMPSERVER 64位的就無法載入sqlsrv
支旅殲持64位的請來這里下載 有區別的就是 5.5 和5.6 版本
所以這里就給 5.5 和 5.6的64位
然後把下載到的文件
php_pdo_sqlsrv_55_nts.dll
php_pdo_sqlsrv_55_ts.dll
php_sqlsrv_55_nts.dll
php_sqlsrv_55_ts.dll
放到php安裝目錄下的ext目錄下 (ext是php5以後的 都是這個目錄)
php配置載入 打開php.ini 搜索 extension 後面添加下面這些 請自己好好看清php.ini的位置
extension=php_pdo_sqlsrv_55_nts.dll
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_nts.dll
extension=php_sqlsrv_55_ts.dll
重啟服務 不重啟 應該就能識別了
6. php連接sql2000問題
PHP完全可以連接MSSQL的。
1.首先需要MSSQLClientTools是一個dll叫做ntwdblib.dll,它通常在MSSQLServer安裝以後被到系統的system32文件夾下;如果是SQLServer就在本地,那你需要核實的是該ntwdblib.dll的版本與SQLServer的版本一致(2005對應2000.80.194.0,2000對應的是2000.2.8.0;)如果SQLServer在遠程,需要將那個ntwdblib.dll拷貝到本機器的system32文件夾下;
(這里經常遇見的一個問題是,如果php<通常是較老的ntwdblib.dll>晚於SQLServer安裝的話,php的ntwdblib.dll會覆蓋SQLserver安裝時在system32下的ntwdblib.dll,導致鏈接是提示:鏈接不上資料庫)
2.核實完system32下的ntwdblib.dll之後,還需要將正確版本的ntwdblib.dll覆蓋php文件夾下的ntwdblib.dll;
3.使用MSSQLServer的方法與MySQL的方法很類似;
如下:
<?php
//鏈接資料庫
$conn=mssql_connect('IBM-F24B11ED1CCSQLEXPRESS','sa','123456');
mssql_select_db('LabMIS',?$conn);
//query語句
$Query="select*fromadmin";
$AdminResult=mssql_query($Query);
//輸出結果
$Num=mssql_num_rows($AdminResult);
for($i=0;$i<$Num;$i++)
{
$Row=mssql_fetch_array($AdminResult);
echo($Row[1]);
echo("<br/>");
}
?>