class
創(chuàng)新互聯(lián)專注于中大型企業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)和網(wǎng)站改版、網(wǎng)站營銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計(jì)客戶成百上千,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注成都品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開發(fā),在前進(jìn)的路上,與客戶一起成長!
connCls{
private
$host;
//主機(jī)名
private
$name;
//用戶名
private
$pass;
//密碼
private
$db;
//數(shù)據(jù)庫名
private
$type;
//編碼類型
如:GBK,UTF-8
等
public
$sql;
//sql語句
public
$tbl;
//表
public
$n;
//表中的字段
public
$v;
//表中字段的值
public
$id;
//獲取的id字段
public
$result=1;//結(jié)果集
public
$page;
//當(dāng)前頁
function
__construct($host,$name,$pass,$db,$type){
//構(gòu)造函數(shù)初始化
$this-host=$host;
$this-name=$name;
$this-pass=$pass;
$this-db=$db;
$this-type=$type;
$this-connect();
//調(diào)用連接數(shù)據(jù)庫函數(shù)
}
//---------------------------------------------------------------------------------
function
connect(){
//定義連接數(shù)據(jù)庫函數(shù)
$link=@mysql_connect($this-host,$this-name,$this-pass)or
die("連接數(shù)據(jù)源失敗!錯誤原因:".mysql_error());
@mysql_select_db($this-db,$link)or
die("抱歉,您選擇的數(shù)據(jù)庫".$this-db."不存在!!!");
mysql_query("set
names
'$this-type'");
//防止出現(xiàn)亂碼
}
//---------------------------------------------------------------------------------
function
query($sql){
//定義執(zhí)行sql語句函數(shù)
$this-connect();
$rs=mysql_query($sql);
//執(zhí)行給定的sql語句
return
$rs;
//返回結(jié)果集
}
hp連接mssql數(shù)據(jù)庫有幾個注意事項(xiàng),尤其mssql的多個版本、32位、64位都有區(qū)別。
首先,php.ini文件中;extension=php_pdo_mssql.dll ;extension=php_pdo_odbc.dll 前面的分號去掉,對應(yīng)的使哪種方式連接mssql。注意要重啟服務(wù)使其生效。
一、建立連接
1、odbc
首先,在php程序所在的服務(wù)器設(shè)置odbc。這里32位和64位操作系統(tǒng)有區(qū)別。32位的從控制面板中管理工具中的數(shù)據(jù)源(odbc)直接建立就可以了,64位的要運(yùn)行C:\Windows\SysWOW64\odbcad32.exe
從這里面設(shè)置。注意:上面只的是數(shù)據(jù)庫服務(wù)器為32為的,數(shù)據(jù)源設(shè)置服務(wù)器為32位和64位兩種的情況。只要兩個服務(wù)器建立的數(shù)據(jù)源位數(shù)一致就好。
下面是odbc建立連接代碼。
$con = odbc_connect('odbc名稱','用戶名','密碼');
2、連接mssql2000
$con = mssql_connect('數(shù)據(jù)庫地址','用戶名','密碼');
3、連接mssql2008
$connectionInfo = array("UID"=用戶名,"PWD"=密碼,"Database"="數(shù)據(jù)庫名稱");
$con = sqlsrv_connect( 數(shù)據(jù)庫地址,$connectionInfo);
二、輸入查詢代碼
這個都一樣,可以直接寫入,也可以從mssql中驗(yàn)證好后復(fù)制過來。簡單點(diǎn)說就是把一個sql語句賦值給一個變量。
類似下面代碼
$query = "SELECT top 12 * 數(shù)據(jù)庫名稱 order by id desc";
三、建立查詢并取出數(shù)據(jù)
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庫了。所以要從微軟這里下載。
四、關(guān)閉連接
這個沒有什么區(qū)別,分別是odbc_close();和mssql_close()和sqlsrv_close();
1、軟件配置
Win7 64 +wampserver2.2d-x32+SQL Server 2008 R2數(shù)據(jù)庫,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前面的分號(;)去掉,然后重啟 Apache。如果不行的話,進(jìn)行第2步。
(2)檢查一下你的php安裝目錄下的ext下面有沒有php_mssql.dll存在,如果沒有,從重新下載一個php安裝,要下載那個壓縮包的才是最完整的。
如果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)、解壓下載下來的文件將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語句后面,注意extension_dir 指向的位置是否正確。
(4)、重啟apache,然后訪問訪問地址/?Phpinfo=1,出現(xiàn)下面圖片中的內(nèi)容,則代表配置正確。
(5)、寫測試代碼,測試代碼如下:
?php
header("Content-type: text/html; charset=utf-8");
$serverName = "localhost"; //數(shù)據(jù)庫服務(wù)器地址$uid = "foodcert"; //數(shù)據(jù)庫用戶名$pwd = "foodcert"; //數(shù)據(jù)庫密碼$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ù)庫表");while($row = sqlsrv_fetch_array($query))
{
print_r($row);
}?
(6)、上面完成之后,測試代碼的時候會出現(xiàn)連接失敗,因?yàn)闆]有安裝sql server nation client ,本地客戶端,去下載合適的客戶端,我使用的是Microsoft? SQL Server? 2012 Native Client,下載地址:
(7)、安裝完成之后,在重新啟動apache,然后訪問就可以連接成功了。
(8)、注意:在php.ini文件所在的文件夾中必須要有ntwdblib.dll文件存在。