php數(shù)據(jù)庫(kù)函數(shù)教程,php數(shù)據(jù)庫(kù)連接函數(shù)

php里說(shuō)出數(shù)組的常用函數(shù)及用法?

PHP常用操作數(shù)組的函數(shù)

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供云浮網(wǎng)站建設(shè)、云浮做網(wǎng)站、云浮網(wǎng)站設(shè)計(jì)、云浮網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、云浮企業(yè)網(wǎng)站模板建站服務(wù),10余年云浮做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

變量和數(shù)組的轉(zhuǎn)換

compact() 將變量整合成數(shù)組

extract() 將數(shù)組中的每個(gè)值以鍵的名分解成變量

變量和字符串轉(zhuǎn)換

explode() 以某個(gè)子串分解字符串成數(shù)組

implode() 將一維數(shù)組根據(jù)某個(gè)符號(hào)拼接成字符串

數(shù)組與數(shù)組之間關(guān)系

array_merge() 合并/并集

array_diff() 差集

array_intersect() 交集

數(shù)組值的操作

array_pop() 刪除(彈出)數(shù)組最后一個(gè)值

array_push() 向數(shù)組中追加一個(gè)值

判斷數(shù)組是否存在數(shù)組中

in_array() 判斷一個(gè)值是否存在數(shù)組中

array_key_exists() 判斷鍵是否存在數(shù)組中

數(shù)組去重

array_unique() 數(shù)組去重

獲取二維數(shù)組中的值的集合

array_column() 獲取二維數(shù)組中的值的集合

提取數(shù)組的鍵與值

array_values 提取數(shù)組的值構(gòu)成一維數(shù)組

array_keys 提取數(shù)組的鍵構(gòu)成一維數(shù)組

返回?cái)?shù)組中的隨機(jī)的鍵

array_rand() 返回?cái)?shù)組中的隨機(jī)的鍵

返回?cái)?shù)組中值的數(shù)量

count() 返回?cái)?shù)組中值的和

查詢數(shù)組中的值

array_search() 查詢數(shù)組中的值是否存在/in_array()有點(diǎn)相似

排序

sort() 排序有很多種,按鍵或值升降序

array_multisort() 多維數(shù)組排序

分割數(shù)組

array_chunk()

thinkphp對(duì)數(shù)據(jù)庫(kù)操作有哪些內(nèi)置函數(shù)

8.4.4 Model類

getModelName() 獲取當(dāng)前Model的名稱

getTableName() 獲取當(dāng)前Model的數(shù)據(jù)表名稱

switchModel(type,vars=array()) 動(dòng)態(tài)切換模型

table() 設(shè)置當(dāng)前操作的數(shù)據(jù)表

field() 設(shè)置要查詢的數(shù)據(jù)字段

where() 設(shè)置查詢或者操作條件

data(data) 設(shè)置數(shù)據(jù)對(duì)象

order(order) 設(shè)置排序

limit(limit) 查詢限制

page(page) 查詢分頁(yè)

join(join) 進(jìn)行JOIN查詢

having(having) 進(jìn)行having查詢

group(group) 進(jìn)行g(shù)roup查詢

lock(lock) 查詢鎖定

distinct(distinct) 唯一性查詢

count(field) 記錄統(tǒng)計(jì)

sum(field) 總數(shù)查詢

min(field) 最小值查詢

max(field) 最大值查詢

avg(field) 平均值查詢

_initialize() 模型初始化方法

_facade(data) 對(duì)保存到數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行處理

_before_write(data) 寫入數(shù)據(jù)前的回調(diào)方法 包括新增和更新

add(data='',options=array()) 新增數(shù)據(jù)

_before_insert(data,options) 寫入數(shù)據(jù)前的回調(diào)方法

_after_insert(data,options) 寫入數(shù)據(jù)后的回調(diào)方法

selectAdd(fields='',table='',options=array()) 通過Select方式添加記錄

save(data='',options=array()) 更新數(shù)據(jù)到數(shù)據(jù)庫(kù)

_before_update(data,options) 更新數(shù)據(jù)前的回調(diào)方法

_after_update(data,options) 更新成功后的回調(diào)方法

delete(options=array()) 刪除數(shù)據(jù)

_after_delete(data,options) 刪除成功后的回調(diào)方法

select(options=array()) 查詢數(shù)據(jù)集

_after_select(resultSet,options) 查詢成功后的回調(diào)方法

findAll(options=array()) select方法的別名

_options_filter(options) 表達(dá)式過濾回調(diào)方法

find(options=array()) 查詢數(shù)據(jù)

_after_find(result,options) 查詢成功的回調(diào)方法

setField(field,value,condition='') 設(shè)置記錄的某個(gè)字段值

setInc(field,condition='',step=1) 字段值增長(zhǎng)

setDec(field,condition='',step=1) 字段值減少

getField(field,condition='',sepa=' ') 獲取某個(gè)字段值

create(data='',type='') 創(chuàng)建數(shù)據(jù)對(duì)象

autoCheckToken(data) 表單令牌驗(yàn)證

query(sql) 執(zhí)行原生SQL查詢

execute(sql='') 執(zhí)行原生SQL操作

startTrans() 啟動(dòng)事務(wù)

commit() 提交事務(wù)

rollback() 事務(wù)回滾

getError() 獲取模型的錯(cuò)誤信息

getDbError() 獲取數(shù)據(jù)庫(kù)的錯(cuò)誤信息

getLastInsID() 獲取最后執(zhí)行的SQL語(yǔ)句

getPk() 獲取主鍵名稱

getDbFields() 獲取數(shù)據(jù)表的字段信息

regex(value,rule) 使用正則驗(yàn)證數(shù)據(jù)

setProperty(name,value) 設(shè)置模型的屬性值

2.1版新增方法:

db(linkNum,config='') 切換當(dāng)前數(shù)據(jù)庫(kù)連接

高級(jí)模型類AdvModel

topN(count,options=array()) 查詢滿足條件的前N個(gè)記錄

getN(position=0,options=array()) 查詢符合條件的第N條記錄

0 表示第一條記錄 -1 表示最后一條記錄

first(options=array()) 獲取滿足條件的第一條記錄

last(options=array()) 獲取滿足條件的最后一條記錄

returnResult(data,type='') 返回指定的數(shù)據(jù)類型

setLazyInc(field,condition='',step=1,lazyTime=0) 字段值延遲增長(zhǎng)

setLazyDec(field,condition='',step=1,lazyTime=0) 字段值延遲減少

addConnect(config,linkNum=NULL) 增加數(shù)據(jù)庫(kù)連接

delConnect(linkNum) 刪除數(shù)據(jù)庫(kù)連接

closeConnect(linkNum) 關(guān)閉數(shù)據(jù)庫(kù)連接

switchConnect(linkNum,name='') 切換數(shù)據(jù)庫(kù)連接

patchQuery(sql=array()) 批處理執(zhí)行SQL語(yǔ)句

getPartitionTableName(data=array()) 得到分表的的數(shù)據(jù)表名

關(guān)于PHP數(shù)據(jù)庫(kù)

PHP調(diào)用三種數(shù)據(jù)庫(kù)的方法

本文比較詳細(xì)的介紹PHP調(diào)用MySQL、ODBC以及ORACLE數(shù)據(jù)庫(kù)。

MySQL是一個(gè)小巧靈瓏的數(shù)據(jù)庫(kù)服務(wù)器軟件,對(duì)于中、小型應(yīng)用系統(tǒng)是非常理想的。除了支持標(biāo)準(zhǔn)的ANSI SQL語(yǔ)句外,最重要的是,它還支持多種平臺(tái),而在Unix/Linux系統(tǒng)上,MySQL支持多線程運(yùn)行方式,從而能獲得相當(dāng)好的性能。它和PHP、 Apache一樣,是屬于開放源代碼軟件。其官方網(wǎng)站是:,上面提供Windows,Linux,Unix版本的源代碼的下載。

注意,MySQL訪問函數(shù)都需要有相應(yīng)的權(quán)限才能運(yùn)行。常用的相關(guān)函數(shù)介紹如下:

(1)integer mysql_connect(主機(jī),用戶名,口令);

此函數(shù)開始一個(gè)對(duì)指定主機(jī)上的MySQL數(shù)據(jù)庫(kù)的連接。若該數(shù)據(jù)庫(kù)位于一個(gè)不同地端口,則在主機(jī)名后加上冒號(hào)和端口號(hào)。所有參數(shù)均為可選的,缺省情況下分別對(duì)應(yīng)為本地主機(jī)、用戶正在執(zhí)行的腳本名和空。主機(jī)可以是IP地址或域名。

在腳本執(zhí)行結(jié)束時(shí),連接被自動(dòng)關(guān)閉,也可以用mysql_close提前關(guān)閉。

(2)boolean mysql_create_db(數(shù)據(jù)庫(kù)名);

創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。注意必須用一個(gè)帶有創(chuàng)建數(shù)據(jù)庫(kù)許可權(quán)的帳號(hào)打開連接。

(3)boolean mysql_select_db(數(shù)據(jù)庫(kù)名,連接號(hào));

選擇缺省數(shù)據(jù)庫(kù)。

(4)integer mysql_query(SQL語(yǔ)句,連接號(hào));

對(duì)指定數(shù)據(jù)庫(kù)進(jìn)行查詢。如果SQL語(yǔ)句是select,則返回一個(gè)結(jié)果號(hào),否則返回的值可以不理會(huì)。如果失敗,返回false.。

(5)array mysql_fetch_array(結(jié)果號(hào));

取出下一行,返回一個(gè)數(shù)組.可以用數(shù)字下標(biāo)訪問(第一個(gè)字段是下標(biāo) 0),也可以用字符串下標(biāo)訪問(即使用各字段名)。如已取了最后一行,返回 false.。

(6)mysql_fetch_row(結(jié)果號(hào));

返回一個(gè)矩陣代表結(jié)果集中一行的所有域。每次調(diào)用都會(huì)產(chǎn)生下一行,直到?jīng)]有行剩下時(shí)返回false。每個(gè)域值都由一個(gè)從零開始的偏移量索引。這是從查詢中獲取結(jié)果的最快方法。

(7)integer mysql_num_rows(結(jié)果號(hào));

返回結(jié)果集中行的數(shù)目

(8)integer mysql_num_fields(結(jié)果號(hào));

返回結(jié)果集中域的數(shù)目。

(9)integer mysql_list_dbs();

向服務(wù)器查詢數(shù)據(jù)庫(kù)列表。它返回一個(gè)結(jié)果指針,該指針可用于mysql_fetch_row函數(shù)及類似函數(shù)。

(10)mysql_list_tables(數(shù)據(jù)庫(kù)名);

獲取一個(gè)指向指定數(shù)據(jù)庫(kù)的表單列表的結(jié)果指針。該結(jié)果指針可用于任何從結(jié)果集中獲取行的函數(shù)。

(11)mysql_close(連接號(hào));

關(guān)閉對(duì)數(shù)據(jù)庫(kù)的連接。連接必須是由mysql_connect打開的。該函數(shù)的使用不是嚴(yán)格必需的,因?yàn)樵谀_本結(jié)束時(shí),所有非永久鏈路都會(huì)被自動(dòng)關(guān)閉。

(12)mysql_pconnect(主機(jī),用戶名,口令);

與mysql_connect完全相似,但建立一個(gè)"永久連接",該連接一經(jīng)建立永不關(guān)閉,即使使用mysql_close函數(shù)或程序執(zhí)行完畢也不關(guān)閉.下一次試圖建立永久連接時(shí),系統(tǒng)如發(fā)現(xiàn)已存在一個(gè)永久連接,則直接返回該連接號(hào)而不重新創(chuàng)建。

下面是一個(gè)調(diào)用MYSQL數(shù)據(jù)庫(kù)并分頁(yè)顯示的例子。

?

$pagesize = 5; //每頁(yè)顯示5條記錄

$host="localhost";

$user="user";

$password="psw";

$dbname="book"; //所查詢的庫(kù)表名;

//連接MySQL數(shù)據(jù)庫(kù)

mysql_connect("$host","$user","$password") or die("無(wú)法連接MySQL數(shù)據(jù)庫(kù)服務(wù)器!");

$db = mysql_select_db("$dbname") or die("無(wú)法連接數(shù)據(jù)庫(kù)!");

$sql = "select count(*) as total from pagetest";//生成查詢記錄數(shù)的SQL語(yǔ)句

$rst = mysql_query($sql) or die("無(wú)法執(zhí)行SQL語(yǔ)句:$sql !"); //查詢記錄數(shù)

$row = mysql_fetch_array($rst) or die("沒有更多的記錄!"); /取出一條記錄

$rowcount = $row["total"];//取出記錄數(shù)

mysql_free_result($rst) or die("無(wú)法釋放result資源!"); //釋放result資源

$pagecount = bcdiv($rowcount+$pagesize-1,$pagesize,0);//算出總共有幾頁(yè)

if(!isset($pageno)) {

$pageno = 1; //在沒有設(shè)置pageno時(shí),缺省為顯示第1頁(yè)

}

if($pageno1) {

$pageno = 1; //若pageno比1小,則把它設(shè)置為1

}

if($pageno$pagecount) {

$pageno = $pagecount; //若pageno比總共的頁(yè)數(shù)大,則把它設(shè)置為最后一頁(yè)

}

if($pageno0) {

$href = eregi_replace("%2f","/",urlencode($PHP_SELF));//把$PHP_SELF轉(zhuǎn)換為可以在URL上使用的字符串,這樣的話就可以處理中文目錄或中文文件名

if($pageno1){//顯示上一頁(yè)的褳接

echo "a href="" . $href . "?pageno=" . ($pageno-1) . ""上一頁(yè)/a ";

}

else{

echo "上一頁(yè)";

}

for($i=1;$i$pageno;$i++){

echo "a href="" . $href . "?pageno=" . $i . """ . $i . "/a ";

}

echo $pageno . " ";

for($i++;$i=$pagecount;$i++){

echo "a href="" . $href . "?pageno=" . $i . """ . $i . "/a ";

}

if($pageno$pagecount){//顯示下一頁(yè)的褳接

echo "a href="" . $href . "?pageno=" . ($pageno+1) . ""下一頁(yè)/a ";

}

else{

echo "下一頁(yè) ";

}

$offset = ($pageno-1) * $pagesize;//算出本頁(yè)第一條記錄在整個(gè)表中的位置(第一條記錄為0)

$sql = "select * from pagetest LIMIT $offset,$pagesize";//生成查詢本頁(yè)數(shù)據(jù)的SQL語(yǔ)句

$rst = mysql_query($sql);//查詢本頁(yè)數(shù)據(jù)

$num_fields = mysql_num_fields($rst);//取得字段總數(shù)

$i = 0;

while($i$num_fields){//取得所有字段的名字

$fields[$i] = mysql_field_name($rst,$i);//取得第i+1個(gè)字段的名字

$i++;

}

echo "table border="1" cellspacing="0" cellpadding="0"";//開始輸出表格

echo "tr";

reset($fields);

while(list(,$field_name)=each($fields)){//顯示字段名稱

echo "th$field_name/th";

}

echo "/tr";

while($row=mysql_fetch_array($rst)){//顯示本頁(yè)數(shù)據(jù)

echo "tr";

reset($fields);

while(list(,$field_name)=each($fields)){//顯示每個(gè)字段的值

$field_value = $row[$field_name];

if($field_value==""){

echo "td /td";

}

else{

echo "td$field_value/td";

}

}

echo "/tr";

}

echo "/table";//表格輸出結(jié)束

mysql_free_result($rst) or die("無(wú)法釋放result資源!");//釋放result資源

}

else{

echo "目前該表中沒有任何數(shù)據(jù)!";

}

mysql_close($server) or die("無(wú)法與服務(wù)器斷開連接!");//斷開連接并釋放資源

?

開放數(shù)據(jù)庫(kù)連接(ODBC)已成為一種與數(shù)據(jù)庫(kù)進(jìn)行通信的工業(yè)標(biāo)準(zhǔn)。PHP也提供了標(biāo)準(zhǔn)的接口,使得PHP能調(diào)用Access,SQL SERVER等數(shù)據(jù)庫(kù)。其相關(guān)函數(shù)是:

(1)integer odbc_connect(string dsn, string user, string password)

連接到一個(gè)ODBC數(shù)據(jù)庫(kù)源名字上。

(2)integer odbc_exec(integer connection, string query)或 odbc_do(integer connection, string query)

在一個(gè)連接上執(zhí)行查詢。

(3)boolean odbc_fetch_row(integer result, integer row)

從一個(gè)結(jié)果集中獲取一行數(shù)據(jù)。Row參數(shù)是可選的,若為空缺,則返回下一個(gè)有效行。在結(jié)果集中不再剩余行時(shí)返回false。

(4)boolean odbc_close(integer connection)

關(guān)閉一個(gè)數(shù)據(jù)庫(kù)的連接。若在該連接上有打開的事務(wù),則返回一個(gè)錯(cuò)誤,而且連接不會(huì)被關(guān)閉。

最后,還是看個(gè)分頁(yè)的例子:

?

//設(shè)定每頁(yè)顯示條數(shù)

$show_num = 10;

$spages = $pages;//避免$pages后期被改變

//定義連接

$dsn = "localhost";

$user = "sa";

$password = "";

//計(jì)算總記錄數(shù)

$rs_num = "select count(*) as id from bbs where zu='0' and lei='".$lei."'";

$conn_id = odbc_connect($dsn,$user,$password);

$rnum = odbc_exec($conn_id,$rs_num);

while(odbc_fetch_row($rnum)){

$total_rs = odbc_result($rnum,"id");//將總記錄數(shù)放入$total_rs變量

}

//計(jì)算與頁(yè)有關(guān)的條數(shù)

$nnn = $total_rs / $show_num;//計(jì)算總頁(yè)數(shù)

$hnnn = intval($nnn);//將總頁(yè)數(shù)取整

$cnnnn = $nnn - $hnnn;

//計(jì)算所需總頁(yè)數(shù)

switch ($cnnn){

case "0":

$hnnn++;

$nnn = $hnnn;//總頁(yè)數(shù)

break;

default :

$nnn = $hnnn;//總頁(yè)數(shù)

break;

};

if ($nnn == 0)$nnn++;

//計(jì)算頁(yè)面改變所需的條件

$fore = $pages;

$next = $pages;

$fore -= 1;

$next += 1;

if ($fore 0) {

echo "a首頁(yè)/a";

echo "a前頁(yè)/a";

};

if ($pages $nnn) {

echo "a后頁(yè)/a";

echo "a尾頁(yè)/a";

};

echo "共".$nnn."頁(yè)";

$query_string = "SELECT * FROM table where condition order by you wanted order";

$cur = odbc_exec($conn_id,$query_string);

//取到循環(huán)的頂部

$cnum = ($pages-1) * $show_num;//計(jì)算當(dāng)前的記錄游標(biāo)的位置

//空循環(huán)到顯示記錄游標(biāo)處

if ($cnum != 0){

for ($i=0;$i=$cnum;odbc_fetch_row($cur)){$i++;};

};

$i=1;

//顯示記錄

while(odbc_fetch_row($cur)){

echo ;

if ($i == $show_num){//在不滿頁(yè)數(shù)時(shí)跳出程序

break;

};

$i++;

};

//關(guān)閉連接

odbc_close($conn_id);

?

Oracle(甲骨文)是世界上最為流行的關(guān)系數(shù)據(jù)庫(kù)。它是大公司推崇的工業(yè)化的強(qiáng)有力的引擎。我們先看看其相關(guān)的函數(shù):

(1)integer ora_logon(string user , string password)

開始對(duì)一個(gè)Oracle數(shù)據(jù)庫(kù)服務(wù)器的連接。

(2)integer ora_open(integer connection)

打開給出的連接的游標(biāo)。

(3)integer ora_do(integer connection, string query)

在給出的連接上執(zhí)行查詢。PHP生成一個(gè)指示器,解析查詢,并執(zhí)行之。

(4)integer ora_parse(integer cursor, string query)

解析一個(gè)查詢并準(zhǔn)備好執(zhí)行。

(5)boolean ora_exec(integer cursor)

執(zhí)行一個(gè)先前由ora_parse函數(shù)解析過的查詢。

(6)boolean ora_fetch(integer cursor)

此函數(shù)會(huì)使得一個(gè)執(zhí)行過的查詢中的行被取到指示器中。這使得您可以調(diào)用ora_getcolumn函數(shù)。

(7)string ora_getcolumn(integer cursor, integer column)

返回當(dāng)前的值。列由零開始的數(shù)字索引。

(8)boolean ora_logoff(integer connection)

斷開對(duì)數(shù)據(jù)庫(kù)服務(wù)器的鏈接。

以下是向ORACLE數(shù)據(jù)庫(kù)插入數(shù)據(jù)的示例程序:

html

headtitle向ORACLE數(shù)據(jù)庫(kù)中插入數(shù)據(jù)/title/head

body

form action="?echo $PHP_SELF;?" method="post"

table border="1" cellspacing="0" cellpadding="0"

tr

thID/th

thname/th

thDescription/th

/tr

tr

tdinput type="text" name="name" maxlength="50" size="10"/td

tdinput type="text" name="email" maxlength="255" size="30"/td

tdinput type="text" name="Description" maxlength="255" size="50"/td

/tr

tr align="center"

td colspan="3"input type="submit" value="提交"??input type="reset" value="重寫"/td

/tr

/table

/form

?

//先設(shè)置兩個(gè)環(huán)境變量ORACLE_HOME,ORACLE_SID

putenv("ORACLE_HOME=/oracle/app/oracle/product/8.0.4");

putenv("ORACLE_SID=ora8");

//設(shè)置網(wǎng)頁(yè)顯示中文

putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");

if($connection=ora_logon("scott","tiger")) {

//庫(kù)表test有ID,name,Description三項(xiàng)

$sql = 'insert into test(ID,name,Description) values ';

$sql .= '('' . $ID . '','' . $name . '',''. $Description . '')';

if($cursor=ora_do($connect,$sql)) {

print("insert finished!");

}

$query = 'select * from test';

if($cursor=ora_do($connect,$query)) {

ora_fetch($cursor);

$content0=ora_getcolumn($cursor,0);

$content1=ora_getcolumn($cursor,1);

$content2=ora_getcolumn($cursor,2);

print("$content0");

print("$content1");

print("$content2");

ora_close($cursor);

}

ora_logoff($connection);

}

?

/body

/html

通過PHP你可以輕松的連接到數(shù)據(jù)庫(kù),請(qǐng)求數(shù)據(jù)并將其顯示在你的web站點(diǎn)中,甚至修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)。 MySQL是一種很流行的數(shù)據(jù)庫(kù),并且在互聯(lián)網(wǎng)中有許多有關(guān)PHP與MySQL的教程。MySQL是免費(fèi)的,這一點(diǎn)也許就吸引了不少人。由于其廣泛應(yīng)用, 我就不想在這里贅述MySQL的使用方法了。Oracle被大量在企業(yè)應(yīng)用中采用,因此我們就利用Oracle來(lái)介紹PHP與數(shù)據(jù)庫(kù)的連接。我們當(dāng)然不會(huì) 提及Oracle數(shù)據(jù)庫(kù)的設(shè)計(jì)原理,原因是這已經(jīng)超出了我們的討論范圍。

PHP提供了兩套函數(shù)與Oracle連接,分別是ORA_和OCI函數(shù)。其中ORA_函數(shù)略顯陳舊。OCI函數(shù)更新?lián)f(shuō)更好一些。兩者的使用語(yǔ)法幾乎相差無(wú)幾。如前所述,你的PHP安裝選項(xiàng)應(yīng)該可以支持兩者的使用。

想獲得更多有關(guān)在Microsoft Windows平臺(tái)上安裝支持PHP3的Apache服務(wù)器的知識(shí)以及更多有關(guān)Oracle數(shù)據(jù)庫(kù)的知識(shí),請(qǐng)查閱以下URL:。

4.1 連接

if ($conn=Ora_Logon("user@TNSNAME","password"))

{

echo "SUCCESS ! Connected to database\n";

}

else

{

echo "Failed :-( Could not connect to database\n";

}

Ora_Logoff($conn);

phpinfo();

?

以上代碼使用TNSNAME(在你的tnsnames.ora文件中指明)定義的Oracle數(shù)據(jù)庫(kù)名稱、用戶名稱和密碼連接數(shù)據(jù)庫(kù)。在成功連接的基礎(chǔ)上,ora_logon函數(shù)返回一個(gè)非零的連接ID并儲(chǔ)存在變量$conn中。

4.2 查詢

假設(shè)與數(shù)據(jù)庫(kù)已經(jīng)連接就緒,下面我們就來(lái)實(shí)際的應(yīng)用對(duì)數(shù)據(jù)庫(kù)的查詢。下面的代碼演示了一個(gè)連接并查詢的典型例子:

/*

* 連接數(shù)據(jù)庫(kù)并執(zhí)行查詢

*/

function printoraerr($in_cur)

{

// 檢查Oracle是否出錯(cuò)

// 如果存在錯(cuò)誤則顯示

// 當(dāng)指針被激活時(shí)每次請(qǐng)求Oracle后調(diào)用該函數(shù)

if(ora_errorcode($in_cur))

echo "Oracle code - ".ora_error($in_cur)."\n";

return;

}

/** 主程序 */

if (!($conn=ora_logon("user@TNSNAME","password")))

{

echo "Connection to database failed\n";

exit;

}

echo "Connected as connection - $conn

\n";

echo "Opening cursor ...

\n";

$cursor=ora_open($conn); printoraerr($cursor);

echo "Opened cursor - $cursor

\n";

$qry="select user,sysdate from dual";

echo "Parsing the query $qry ...

\n";

ora_parse($cursor,$qry,0); printoraerr($cursor);

echo "Query parsed

\n";

echo "Executing cursor ...

\n";

ora_exec($cursor); printoraerr($cursor);

echo "Executed cursor

\n";

echo "Fetching cursor ...

\n";

while(ora_fetch($cursor))

{

$user=ora_getcolumn($cursor,0); printoraerr($cursor);

$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);

echo " row = $user, $sysdate

\n";

}

echo "Fetched all records

\n";

echo "Closing cursor ...

\n";

ora_close($cursor);

echo "Closed cursor

\n";

echo "Logging off from oracle...

\n";

ora_logoff($conn);

echo "Logged off from oracle

\n";

?

(譯者注:以上代碼段缺少注釋,請(qǐng)讀者參考PHP Manual的Oracle數(shù)據(jù)庫(kù)函數(shù)部分)

4.3 顯示結(jié)果

以下代碼演示了怎樣查詢數(shù)據(jù)庫(kù)并將結(jié)果輸出:

function printoraerr($in_cur, $conn)

{

// 檢查Oracle是否出錯(cuò)

// 如果存在錯(cuò)誤則顯示

// 當(dāng)指針被激活時(shí)每次請(qǐng)求Oracle后調(diào)用該函數(shù)

// If it encountered an error, we exit immediately

if(ora_errorcode($in_cur))

{

echo "Oracle code - ".ora_error($in_cur)."

n";

ora_logoff($conn);

exit;

}

return;

}

function exequery($w_qry,$conn)

{

$cursor=ora_open($conn); printoraerr($cursor,$conn);

ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn);

ora_exec($cursor); printoraerr($cursor,$conn);

$numrows=0;

$w_numcols=ora_numcols($cursor);

// 顯示頭部

echo "

\n";

for ($i=0;$i$w_numcols;$i++)

{

$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";

echo "\t ".ora_columnname($cursor,$i)." \n";

}

echo "

\n";

while(ora_fetch($cursor))

{

echo " \n";

for ($i=0;$i$w_numcols;$i++)

{

$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";

if(ora_columntype($cursor,$i)=="LONG")

echo " ".

ora_getcolumn($cursor,$i)."

\n";

else

echo " ".ora_getcolumn($cursor,$i)." \n";

printoraerr($cursor,$conn);

}

$numrows++;

echo "

\n";

}

if ($numrows==0)

echo " Query returned no records

\n";

else

{

echo " \n";

echo " Count \n";

echo " $numrows \n";

echo "

\n";

}

echo " \n";

ora_close($cursor);

return;

}

// 主程序

if(!($conn=ora_logon("user@SID","password")))

{

echo "Error: Cannot connect to database\n";

exit;

}

$qry="SELECT

deptno \"Dept\"

,empno \"Emp\"

,empnm \"Name\"

,salary \"Salary\"

FROM

employee

ORDER BY 1,2";

exequery($qry);

ora_logoff($conn);

?

(譯者注:以上代碼段缺少注釋,請(qǐng)讀者參考PHP Manual的Oracle數(shù)據(jù)庫(kù)函數(shù)部分)

4.4 基于HTTP的Oracle登錄

將以下代碼加在PHP頁(yè)面代碼之前以確認(rèn)Oracle登錄。注意你必須正確設(shè)定$ SID。

if(!isset($PHP_AUTH_USER))

{

Header("WWW-authenticate: basic realm=\"$SID\"");

Header("HTTP/1.0 401 Unauthorized");

$title="Login Instructions";

echo "

You are not authorized to enter the site

\n";

exit;

}

else

{

if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW)))

{

Header("WWW-authenticate: basic realm=\"$SID\"");

Header("HTTP/1.0 401 Unauthorized");

$title="Login Instructions";

echo "

You are not authorised to enter the site

\n";

exit;

}

}

?

PHP mysql_result()函數(shù)使用方法

mysql_result定義和用法

mysql_result()

函數(shù)返回結(jié)果集中一個(gè)字段的值。

mysql_result()

返回

MySQL

結(jié)果集中一個(gè)單元的內(nèi)容。字段參數(shù)可以是字段的偏移量或者字段名,或者是字段表點(diǎn)字段名(tablename.fieldname)。如果給列起了別名('select

foo

as

bar

from...'),則用別名替代列名。

如果成功,則該函數(shù)返回字段值。如果失敗,則返回

false。

調(diào)用

mysql_result()

不能和其它處理結(jié)果集的函數(shù)混合調(diào)用。

語(yǔ)法

mysql_result(data,row,field)

參數(shù)

描述

data

必需。規(guī)定要使用的結(jié)果標(biāo)識(shí)符。該標(biāo)識(shí)符是

mysql_query()

函數(shù)返回的。

row

必需。規(guī)定行號(hào)。行號(hào)從

開始。

field

可選。規(guī)定獲取哪個(gè)字段??梢允亲侄纹浦担侄蚊?/p>

table.fieldname。

如果該參數(shù)未規(guī)定,則該函數(shù)從指定的行獲取第一個(gè)字段。

說(shuō)明

當(dāng)作用于很大的結(jié)果集時(shí),應(yīng)該考慮使用能夠取得整行的函數(shù)。這些函數(shù)在一次函數(shù)調(diào)用中返回了多個(gè)單元的內(nèi)容,比

mysql_result()

快得多。

此外請(qǐng)注意,在字段參數(shù)中指定數(shù)字偏移量比指定字段名或者

tablename.fieldname

要快得多。

例子

?php

$con

=

mysql_connect("localhost",

"hello",

"321");

if

(!$con)

{

die('Could

not

connect:

'

.

mysql_error());

}

$db_selected

=

mysql_select_db("test_db",

$con);

$sql

=

"SELECT

*

from

Person";

$result

=

mysql_query($sql,$con);

echo

mysql_result($result,0);

mysql_close($con);

?

輸出類似:

Adams

php中mysqli替換mysql_result的官方方法

今天升級(jí)了php版本,順便想把php代碼中的mysql連接方式改成mysqli,因?yàn)楣俜阶詐hp5.3開始一直推薦mysqli

pdo

。不多說(shuō)了,貼代碼

//

錯(cuò)略的使用mysqli替換

if

(!function_exists('mysql_result'))

{

function

mysql_result($result,

$number,

$field=0)

{

mysqli_data_seek($result,

$number);

$row

=

mysqli_fetch_array($result);

return

$row[$field];

}

}

好了,這篇文章就介紹到這了。

網(wǎng)站欄目:php數(shù)據(jù)庫(kù)函數(shù)教程,php數(shù)據(jù)庫(kù)連接函數(shù)
標(biāo)題來(lái)源:http://www.muchs.cn/article18/hsssdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、、自適應(yīng)網(wǎng)站網(wǎng)站策劃、App開發(fā)、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司