首頁  >  文章  >  後端開發  >  php連線微軟MSSQL(sql server)攻略

php連線微軟MSSQL(sql server)攻略

墨辰丷
墨辰丷原創
2018-05-30 13:48:181589瀏覽

在研究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 = 20971520
mssql.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
extension=php_pdo.dll

#其中的52、53表示##extension=php_pdo.dll


#其中的52、53表示是php的5.2. .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 = &#39;mssql&#39;; // Required
$CFG->dbhost = &#39;localhost&#39;; // assuming MS SQL is on the same server, otherwise use an IP
$CFG->dbname = &#39;moodle&#39;;  // or whatever you called the database you created
$CFG->dbuser = &#39;yourusername&#39;; // I usually use the &#39;sa&#39; account (dbowner perms are enough)
$CFG->dbpass = &#39;yourpassword&#39;;
$CFG->dbpersist = false;
$CFG->prefix = &#39;mdl_&#39;;  //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(&#39;localhost&#39;, &#39;db_user&#39;, &#39;db_password&#39;);
	if(!$link) {
		echo&#39;Could not connect&#39;;
		die(&#39;Could not connect: &#39; . mssql_error());
	}
	echo&#39;Successful connection&#39;;
	mssql_close($link);
?>

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

php中常量、静态属性、非静态属性的区别

php中静态属性和静态方法区别

php中类和对象:静态属性、静态方法图文详解

以上是php連線微軟MSSQL(sql server)攻略的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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