1、軟件配置
渝中網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),渝中網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為渝中1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的渝中做網(wǎng)站的公司定做!
Win7 64 +wampserver2.2d-x32+SQL Server 2008 R2數(shù)據(jù)庫(kù),wamp2.2中的php版本是5.3.10。
Php環(huán)境也可以換成php+apache。
2、支持連接MySQL Server配置
php版本5.3以前,有php_mssql功能,可以使用,但是5.3及以后的版本不支持。
2.1、php連接mssql設(shè)置(php5.3以前版本)
(1)、打開php.ini,將
;extension=php_mssql.dll前面的分號(hào)(;)去掉,然后重啟 Apache。如果不行的話,進(jìn)行第2步。
(2)檢查一下你的php安裝目錄下的ext下面有沒(méi)有php_mssql.dll存在,如果沒(méi)有,從重新下載一個(gè)php安裝,要下載那個(gè)壓縮包的才是最完整的。
如果ext目錄下已經(jīng)有了php_mssql.dll,那么你需要打開php.ini,找到
extension_dir = "./ext"
這一句(或者類似的,不一定是"./ext",查找"extension_dir"即可),然后把"./ext"修改為你的php安裝目錄的ext目錄的完整路徑,比如"c:/php/ext",或者"c:/program files/php/ext"這樣。然后再次重啟 Apache。如果還是不行的話,可能就需要第3步了。
(3)把 php 目錄下的 ntwdblib.dll 和 php_mssql.dll 復(fù)制到 system32的系統(tǒng)目錄中去,然后重起Apache。
(4)然后就可以連接MSSQL,并進(jìn)行一些操作了。連接例子如下:
2.2、php連接sqlsrv(php5.3以及以上版本)
(1)、下載Microsoft Drivers for?PHP?for SQL Server,官方下載地址:,我使用的是SQLSRV2.0。
(2)、解壓下載下來(lái)的文件將php_pdo_sqlsrv_53_ts_vc9.dll文件和php_sqlsrv_53_ts_vc9.dll文件復(fù)制到php安裝目錄下的ext文件夾中。此處根據(jù)版本不同使用的文件不同。
(3)、在php.ini中添加
extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
到很多;extension=***.dll語(yǔ)句后面,注意extension_dir 指向的位置是否正確。
(4)、重啟apache,然后訪問(wèn)訪問(wèn)地址/?Phpinfo=1,出現(xiàn)下面圖片中的內(nèi)容,則代表配置正確。
(5)、寫測(cè)試代碼,測(cè)試代碼如下:
?php
header("Content-type: text/html; charset=utf-8");
$serverName = "localhost"; //數(shù)據(jù)庫(kù)服務(wù)器地址$uid = "foodcert"; //數(shù)據(jù)庫(kù)用戶名$pwd = "foodcert"; //數(shù)據(jù)庫(kù)密碼$connectionInfo = array("UID"=$uid, "PWD"=$pwd, "Database"="FoodCert");
$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn == false)
{
echo "連接失敗!";
die( print_r( sqlsrv_errors(), true));
}else{
echo "連接成功!"; ?
}
$query = sqlsrv_query($conn, "select * from 數(shù)據(jù)庫(kù)表");while($row = sqlsrv_fetch_array($query))
{
print_r($row);
}?
(6)、上面完成之后,測(cè)試代碼的時(shí)候會(huì)出現(xiàn)連接失敗,因?yàn)闆](méi)有安裝sql server nation client ,本地客戶端,去下載合適的客戶端,我使用的是Microsoft? SQL Server? 2012 Native Client,下載地址:
(7)、安裝完成之后,在重新啟動(dòng)apache,然后訪問(wèn)就可以連接成功了。
(8)、注意:在php.ini文件所在的文件夾中必須要有ntwdblib.dll文件存在。
方法/步驟
1
登錄到phpMyAdmin
2
新建一個(gè)要導(dǎo)入的數(shù)據(jù)庫(kù),點(diǎn)擊“+new”
3
如圖,分別填寫數(shù)據(jù)庫(kù)名稱,以及選擇數(shù)據(jù)庫(kù)的排序規(guī)則,
4
完成步驟3,點(diǎn)擊“創(chuàng)建”
5
完成步驟4,從右側(cè)就可以看到我們新創(chuàng)建的數(shù)據(jù)庫(kù)了,如果沒(méi)有立即顯示,刷新即可立馬顯示了。
6
單擊我們新創(chuàng)建的數(shù)據(jù)庫(kù),
7
然后,我們選擇“導(dǎo)入”,
8
完成步驟7,我們點(diǎn)擊“選擇文件”,
9
點(diǎn)擊了“選擇文件”之后,就會(huì)出現(xiàn)如圖所示的彈出框,我們選擇要導(dǎo)入的sql就可以了,后綴名可以是.sql,也可以是壓縮文件.zip。如圖,選擇好文件之后,點(diǎn)擊“確定”就可以了
10
完成步驟⑨,你就可以從剛才的頁(yè)面中看到自己上傳的文件了,如圖所示,其余選項(xiàng)默認(rèn)就可以了,然后點(diǎn)擊“執(zhí)行”就可以了。
11
這個(gè)時(shí)候,你就可以看到你的數(shù)據(jù)已經(jīng)導(dǎo)入到你新創(chuàng)建的數(shù)據(jù)庫(kù)中了
1、學(xué)習(xí)的方法,最好是看手冊(cè)
在前一篇文章中涉及到了連接數(shù)據(jù)庫(kù)sqlsrv_connect();還記得我們mysql連接數(shù)據(jù)庫(kù)的時(shí)候也是mysql_connect();兩者操作數(shù)據(jù)庫(kù)是很相似的。從零基礎(chǔ)開始學(xué)起的話,只能是查閱手冊(cè)。查看一下sqlsrv有哪些函數(shù)提供我們使用!推薦網(wǎng)址是:
【注意】很多的方法都跟mysql提供的方法很相似,看到后面的函數(shù)名就大概知道里面的用法,比如說(shuō)mysql執(zhí)行sql語(yǔ)句的時(shí)候調(diào)用mysql_query();而sqlserver執(zhí)行sql語(yǔ)句的時(shí)候調(diào)用也是sqlsrv_query(),但是特別注意一點(diǎn)就是,它們的傳遞參數(shù)不一樣。詳細(xì)的只能看一下手冊(cè)。接下來(lái)我簡(jiǎn)單總結(jié)一下操作數(shù)據(jù)的方法
2、連接數(shù)據(jù)庫(kù)sqlsrv_connect()
?php$serverName = "serverName\sqlexpress";//服務(wù)器的名字,本地localhost$connectionInfo = array( "Database"="dbName", "UID"="userName", "PWD"="password");$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn ) { ? ? echo "Connection established.br /";
}else{ ? ? echo "Connection could not be established.br /"; ? ? die( print_r( sqlsrv_errors(), true));
}
3、操作數(shù)據(jù)庫(kù)
1)執(zhí)行sql語(yǔ)句sqlsrv_query(),返回值為true或者false,這里函數(shù)的用法跟mysql_query(),不一樣。它需要把連接的資源句柄當(dāng)作參數(shù)傳進(jìn)去,看源碼。資源句柄就是上面代碼連接數(shù)據(jù)庫(kù)的“$conn”。
$sql = "select * from test1"; ? //sql語(yǔ)句$data = sqlsrv_query($conn,$sql); ?//$conn資源句柄if($data == true){ ? ?die("執(zhí)行成功");
}else{ ? ?die("執(zhí)行失敗");
}
2)獲取結(jié)果集
//以數(shù)值索引數(shù)組、關(guān)聯(lián)數(shù)組或這兩種數(shù)組的形式檢索下一行的數(shù)據(jù)。類似于mysql_fetch_arraysqlsrv_fetch_array ?
//以對(duì)象形式檢索下一行的數(shù)據(jù)。sqlsrv_fetch_object 1234
$sql = "select * from test1";$data = sqlsrv_query($conn,$sql);if($data == true){ ? ?while($row = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) { ? ? ? ? ?echo $row['id'].", ".$row['name']."br /";
}else{ ? ? ? ? die( print_r( sqlsrv_errors(), true));
}
}
$sql = "SELECT fName, lName FROM Table_1";$stmt = sqlsrv_query( $conn, $sql);if( $stmt === false ) { ? ? die( print_r( sqlsrv_errors(), true));
}while( $obj = sqlsrv_fetch_object( $stmt)) { ? ? ?echo $obj-fName.", ".$obj-lName."br /";
}
3)顯示錯(cuò)誤信息sqlsrv_errors():上面都有用到這個(gè)函數(shù),只要是操作數(shù)據(jù)庫(kù)發(fā)生錯(cuò)誤,都可以使用這個(gè)函數(shù)打印出來(lái)看一下壓
這里就不用上代碼了
我用的PHP版本是php5.6.12,mssql數(shù)據(jù)庫(kù)版本為2008
兩種途徑:
1、直接連接
$servname="CAPTAINHERO567";
$conninfo=array(
"Database"="netdata",
"UID"="lxz2005",
"PWD"="831140");
$conn=sqlsrv_connect($servname,
$conninfo);
$sql="select
*
from
Pinfo";
$db=sqlsrv_query($conn,
$sql);
while($row=sqlsrv_fetch_array($db))
{
echo("
".iconv("GB2312","UTF-8",$row["Pname"])."
");
}
2、使用PDO抽象數(shù)據(jù)層連接
$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!";
1:PHP5.2.x本身有個(gè)php_mssql.dll的擴(kuò)展用來(lái)連接Sql server,但是這個(gè)dll只是用來(lái)連接低版本 Sql server的(2000以下版本),在Sql server 2005及以上版本無(wú)法使用mssql_connect連接到數(shù)據(jù)庫(kù)。
2:php5.3.x不再支持php_mssql.dll 拓展庫(kù)了,及時(shí)使用php5.2.x中的php_mssql.dll也無(wú)法使用。 微軟專門為PHP出了個(gè)SQL Server的擴(kuò)展(Windows版本的),對(duì)于Windows下使用php開發(fā)SQL Server應(yīng)用來(lái)說(shuō),這個(gè)擴(kuò)展有利于利用SQL Server來(lái)開發(fā)php平臺(tái)連接sql server數(shù)據(jù)庫(kù)管理系統(tǒng)。
一、php5.3以下的版本連接sql server
5.3以下的版本擴(kuò)展里面自帶一個(gè)php_mssql.dll;接數(shù)據(jù)庫(kù)的擴(kuò)展,可以利用這個(gè)擴(kuò)展鏈接數(shù)據(jù)庫(kù),(只限于鏈接低版本數(shù)據(jù)庫(kù))。
具體的步驟如下:
1:首先安裝sql server,超級(jí)不好安裝,我之前安裝的是2008版本的,Windows過(guò)期后就不能用了,然后重裝還裝不上,最后重裝系統(tǒng)才裝上
2:確定SQL裝的時(shí)候用的是混合認(rèn)證模式,或SQL驗(yàn)證模式,然后打開php的配置文件(php.ini),開啟mssql擴(kuò)展 (extension=php_pdo_mssql.dll前面的分號(hào)去掉)并且需要把mssql.secure_connection = On 重啟后生效。
如果比較順利的話已經(jīng)可以連接數(shù)據(jù)庫(kù)了,如果連不上就需要繼續(xù)低下的配置:
3: 檢查ntwdblib文件的版本(php/下面和Apache/下面)下載正確的版本的 ntwdblib.dll(2000.80.194.0)覆蓋現(xiàn)有的DLL文件,(把ntwdblib.dll,php_mssql.dll 復(fù)制到system32目錄中也可以)ntwdblib.dll 用于PHP連接MSSQL2005或2008的驅(qū)動(dòng)文件。
4:測(cè)試連接:mssql_connect('localhost,1433', '用戶名', '密碼');
二、php5.3+連接sql server
其 實(shí)5.3以下的php版本已經(jīng)很少用了,況且安全性和兼容性都不好,所以高版本的php還是比較常見的。實(shí)踐證明低版本的php連接數(shù)據(jù)庫(kù)成功率比較低 (2005以上的版本幾乎不能使用),推薦使用php5.3+ php使用微軟專門的擴(kuò)展 SQLSRV 來(lái)連接sqlserver數(shù)據(jù)庫(kù)
步驟如下:
1:先到微軟網(wǎng)站下載 SQL Server Driver for PHP 是一個(gè)自解壓的 EXE文件,解壓縮后你會(huì)得到這么幾個(gè)文件:
其中的52、53表示就是php的5.2.x和5.3.x 版本,選擇跟你php版本相匹配的;vc6或vc9的選擇要看你使用的是什么web服務(wù)器軟件,如果使用的是IIS那就選擇vc9的,如果是Apache 則選擇vc6的,ts和nts的選擇要看你安裝的php版本是線程安全版的還是非線程安全版,ts是線程安全,nts是非線程安全。
如果不知道可以在phpinfo里看Zend Extension Build這個(gè)屬性如下圖:
2:將擴(kuò)展拷貝到拷到php/ext目錄下,在php.ini文件,添加一下代碼:
extension=在ext下的pdo擴(kuò)展(用于pdo)
extension=在ext下的擴(kuò)展
3:重啟服務(wù)器,打開phpinfo();看到以下狀態(tài)就證明添加擴(kuò)展成功,
4:連接測(cè)試:
?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,在這個(gè)版本中,還有幾個(gè)函數(shù):
這個(gè)擴(kuò)展為php新增了一系列sqlsrv_開頭的函數(shù),常用的如下:
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
. . .
另外注意的是,如果使用這個(gè)擴(kuò)展連接Sql server 2005以及以上版本的sql server(如sql server 2008),你還需要在機(jī)器上先安裝 SQL Server Native Client
不然會(huì)出現(xiàn)如下錯(cuò)誤:
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 驅(qū)動(dòng)程序管理器] 未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動(dòng)程序'(length=71)
'message' =string'[Microsoft][ODBC 驅(qū)動(dòng)程序管理器] 未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動(dòng)程序'(length=71)
解決方法:需要安裝SQL Server 2008 Native Client ODBC Driver,下載安裝文件sqlncli.msi,安裝后就可以了。
您好,不可以連接,默認(rèn)沒(méi)有提供連接sql server的數(shù)據(jù)庫(kù)管理工具,只提供了sqlite和mysql的工具。