欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

PHP簡易文件數(shù)據(jù)庫,php數(shù)據(jù)庫配置文件

PHP簡單的操作Access數(shù)據(jù)庫

關(guān)于用PHP連接ACCESS數(shù)據(jù)庫的做法

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、上思ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的上思網(wǎng)站制作公司

用ASP和PHP的,一起做一個(gè)比較..

ASP程序

程序代碼 程序代碼

1.conn= "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" Server.MapPath("*.mdb")

2.set conn = server.createobject("adodb.connection")

3.conn.open conn

4.set rs = Server.CreateObject("adodb.recordset")

5.sql = "select * from 表名"

6.rs.Open sql, conn, 3, 1

7.rs.Close

PHP程序

程序代碼 程序代碼

?PHP

1.$conn = @new COM("ADODB.Connection") or die ("ADO連接失敗!");

2.$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("temp/TempData.mdb");

3.$conn-Open($connstr);

4.$rs = @new COM("ADODB.RecordSet");

5.$sql ="select * from blog_Content";

6.$rs-Open($sql,$conn,1,3);

7.$rs-close();

?

兩個(gè)程序都相對(duì)應(yīng)....很好理解了吧.嘿....然后就是ASP和PHP操作記錄集了...有什么不同,,看資料了事5~

php: $rs[name/index];

asp: rs(name/index);

php: $rs-Fields["name"]-Value / fields[index]-Value;

asp: rs.fields(index)/rs.field(name);

php中的方法和ASP中基本一致,只是寫法上不一樣,,注意:PHP區(qū)分大小寫,寫時(shí)后面一定要加;號(hào)

asp:

修改記錄集中的記錄

rs.AddNew 向記錄集中添加一條新記錄

rs.Delete 從記錄集中刪除一條記錄

rs.{fieldName/fieldIndex}=指定值;

rs.Update 保存對(duì)當(dāng)前記錄所做的修改

CancelBatch 當(dāng)記錄集處在批量更新模式時(shí))取消一批更新

CancelUpdate 調(diào)用Update之前)取消對(duì)當(dāng)前記錄所做的所有修改

UpdateBatch 當(dāng)記錄集處于批量更新模式時(shí))保存對(duì)一個(gè)或多個(gè)記錄的修改

遍歷記錄集

Move NumRecords 在記錄集中向前或向后移動(dòng)指定數(shù)目的記錄數(shù)。

MoveFirst 移動(dòng)到記錄集的第一條記錄

MoveNext 移動(dòng)到記錄集的下一條記錄

MovePrevious 移動(dòng)到記錄集中的上一條記錄

MoveLast 移動(dòng)到記錄集的最后一條記錄

記錄集對(duì)象屬性

AbsolutePosition 用來設(shè)置或讀取當(dāng)前記錄在記錄集中的位置順序號(hào)

BOF 標(biāo)明當(dāng)前位置在記錄集中的第一條記錄之前

EOF 標(biāo)明當(dāng)前位置在記錄集中的最后一條記錄之后

RecordCount 表示一個(gè)記錄集中的記錄總數(shù)

記錄集進(jìn)行分頁

AbsolutePage 指定當(dāng)前的頁

PagePount 返回記錄集中的邏輯頁數(shù)

PageSize 指定一個(gè)邏輯頁中的記錄個(gè)數(shù),缺省值是10

GetRows() 記錄取到數(shù)組

MaxRecords 記錄集的最大容量

本人注:在文章最后只給出了ASP的內(nèi)容,沒有找到PHP的啊,還有我試驗(yàn)了以上內(nèi)容,可是發(fā)現(xiàn)那容輸出以后只是一個(gè)Object單詞,不知道為什么,還希望高手不吝賜教!

thikphp 單獨(dú)php文件怎樣操作數(shù)據(jù)庫

ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫訪問層,把不同的數(shù)據(jù)庫操作封裝起來,我們只需要使用公共的Db類進(jìn)行操作,而無需針對(duì)不同的數(shù)據(jù)庫寫不同的代碼和底層實(shí)現(xiàn),Db類會(huì)自動(dòng)調(diào)用相應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)來處理。目前的數(shù)據(jù)庫包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對(duì)PDO的支持,如果應(yīng)用需要使用數(shù)據(jù)庫,必須配置數(shù)據(jù)庫連接信息,數(shù)據(jù)庫的配置文件有多種定義方式。

常用的配置方式是在項(xiàng)目配置文件中添加下面的參數(shù):

?php

//項(xiàng)目配置文件

return array(

//數(shù)據(jù)庫配置信息

'DB_TYPE' = 'mysql', // 數(shù)據(jù)庫類型

'DB_HOST' = 'localhost', // 服務(wù)器地址

'DB_NAME' = 'thinkphp', // 數(shù)據(jù)庫名

'DB_USER' = 'root', // 用戶名

'DB_PWD' = '', // 密碼

'DB_PORT' = 3306, // 端口

'DB_PREFIX' = 'think_', // 數(shù)據(jù)庫表前綴

//其他項(xiàng)目配置參數(shù)

// ...

);

或者采用如下配置

'DB_DSN' = 'mysql://username:password@localhost:3306/DbName'

使用DB_DSN方式定義可以簡化配置參數(shù),DSN參數(shù)格式為:

數(shù)據(jù)庫類型://用戶名:密碼@數(shù)據(jù)庫地址:數(shù)據(jù)庫端口/數(shù)據(jù)庫名

如果兩種配置參數(shù)同時(shí)存在的話,DB_DSN配置參數(shù)優(yōu)先。

注意:如果要設(shè)置分布式數(shù)據(jù)庫,暫時(shí)不支持DB_DSN方式配置。1

如果采用PDO驅(qū)動(dòng)的話,則必須首先配置DB_TYPE 為pdo,然后還需要單獨(dú)配置其他參數(shù),例如:

//PDO連接方式

'DB_TYPE' = 'pdo', // 數(shù)據(jù)庫類型

'DB_USER' = 'root', // 用戶名

'DB_PWD' = '', // 密碼

'DB_PREFIX' = 'think_', // 數(shù)據(jù)庫表前綴

'DB_DSN' = 'mysql:host=localhost;dbname=thinkphp;charset=UTF-8'

注意:PDO方式的DB_DSN配置格式有所區(qū)別,根據(jù)不同的數(shù)據(jù)庫類型設(shè)置有所不同。

配置文件定義的數(shù)據(jù)庫連接信息一般是系統(tǒng)默認(rèn)采用的,因?yàn)橐话阋粋€(gè)項(xiàng)目的數(shù)據(jù)庫訪問配置是相同的。該方法系統(tǒng)在連接數(shù)據(jù)庫的時(shí)候會(huì)自動(dòng)獲取,無需手動(dòng)連接。

可以對(duì)每個(gè)項(xiàng)目和不同的分組定義不同的數(shù)據(jù)庫連接信息,如果開啟了調(diào)試模式的話,還可以在不同的應(yīng)用狀態(tài)的配置文件里面定義獨(dú)立的數(shù)據(jù)庫配置信息。1

第二種 在模型類里面定義connection屬性

如果在某個(gè)模型類里面定義了connection屬性的話,則實(shí)例化該自定義模型的時(shí)候會(huì)采用定義的數(shù)據(jù)庫連接信息,而不是配置文件中設(shè)置的默認(rèn)連接信息,通常用于某些數(shù)據(jù)表位于當(dāng)前數(shù)據(jù)庫連接之外的其它數(shù)據(jù)庫,例如:

//在模型里單獨(dú)設(shè)置數(shù)據(jù)庫連接信息

protected $connection = array(

'db_type' = 'mysql',

'db_user' = 'root',

'db_pwd' = '1234',

'db_host' = 'localhost',

'db_port' = '3306',

'db_name' = 'thinkphp'

);

也可以采用DSN方式定義,例如:

//或者使用DSN定義

protected $connection = 'mysql://root:1234@localhost:3306/thinkphp';

如果我們已經(jīng)在配置文件中配置了額外的數(shù)據(jù)庫連接信息,例如:

//數(shù)據(jù)庫配置1

'DB_CONFIG1' = array(

'db_type' = 'mysql',

'db_user' = 'root',

'db_pwd' = '1234',

'db_host' = 'localhost',

'db_port' = '3306',

'db_name' = 'thinkphp'

),

//數(shù)據(jù)庫配置2

'DB_CONFIG2' = 'mysql://root:1234@localhost:3306/thinkphp';

那么,我們可以把模型類的屬性定義改為:

//調(diào)用配置文件中的數(shù)據(jù)庫配置1

protected $connection = 'DB_CONFIG1';

//調(diào)用配置文件中的數(shù)據(jù)庫配置2

protected $connection = 'DB_CONFIG2';

如果采用的是M方法實(shí)例化模型的話,也可以支持傳入不同的數(shù)據(jù)庫連接信息,例如:

$User = M('User','other_','mysql://root:1234@localhost/demo');

表示實(shí)例化User模型,連接的是demo數(shù)據(jù)庫的other_user表,采用的連接信息是第三個(gè)參數(shù)配置的。如果我們?cè)陧?xiàng)目配置文件中已經(jīng)配置了DB_CONFIG2的話,也可以采用:

$User = M('User','other_','DB_CONFIG2');

如果你的個(gè)別數(shù)據(jù)表沒有定義任何前綴的話,可以在前綴參數(shù)中傳入NULL,例如:

$User = M('User',Null,'DB_CONFIG2');

表示實(shí)例化User模型,連接的是demo數(shù)據(jù)庫的user表。

需要注意的是,ThinkPHP的數(shù)據(jù)庫連接的惰性的,所以并不是在實(shí)例化的時(shí)候就連接數(shù)據(jù)庫,而是在有實(shí)際的數(shù)據(jù)操作的時(shí)候才會(huì)去連接數(shù)據(jù)庫(額外的情況是,在系統(tǒng)第一次實(shí)例化模型的時(shí)候,會(huì)自動(dòng)連接數(shù)據(jù)庫獲取相關(guān)模型類對(duì)應(yīng)的數(shù)據(jù)表的字段信息)。

PHP 如何讀取本地TXT文件并寫入數(shù)據(jù)庫

如在客戶端的話, 那需要上傳!

file ('c:\123.txt');

讀取的是服務(wù)器上硬盤C區(qū)中的123.txt

而不是訪問者電腦的硬盤上的文件!

無論什么服務(wù)器端腳本, 在用戶未上傳本地文件的情況下, 都是不可能讀取到客戶端上的文件的!

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

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

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

MySQL是一個(gè)小巧靈瓏的數(shù)據(jù)庫服務(wù)器軟件,對(duì)于中、小型應(yīng)用系統(tǒng)是非常理想的。除了支持標(biāo)準(zhǔn)的ANSI SQL語句外,最重要的是,它還支持多種平臺(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ù)庫的連接。若該數(shù)據(jù)庫位于一個(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ù)庫名);

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

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

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

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

對(duì)指定數(shù)據(jù)庫進(jìn)行查詢。如果SQL語句是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ù)庫列表。它返回一個(gè)結(jié)果指針,該指針可用于mysql_fetch_row函數(shù)及類似函數(shù)。

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

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

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

關(guān)閉對(duì)數(shù)據(jù)庫的連接。連接必須是由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ù)庫并分頁顯示的例子。

?

$pagesize = 5; //每頁顯示5條記錄

$host="localhost";

$user="user";

$password="psw";

$dbname="book"; //所查詢的庫表名;

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

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

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

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

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

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

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

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

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

if(!isset($pageno)) {

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

}

if($pageno1) {

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

}

if($pageno$pagecount) {

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

}

if($pageno0) {

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

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

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

}

else{

echo "上一頁";

}

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){//顯示下一頁的褳接

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

}

else{

echo "下一頁 ";

}

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

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

$rst = mysql_query($sql);//查詢本頁數(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)){//顯示本頁數(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("無法釋放result資源!");//釋放result資源

}

else{

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

}

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

?

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

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

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

(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ù)庫的連接。若在該連接上有打開的事務(wù),則返回一個(gè)錯(cuò)誤,而且連接不會(huì)被關(guān)閉。

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

?

//設(shè)定每頁顯示條數(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ì)算與頁有關(guān)的條數(shù)

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

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

$cnnnn = $nnn - $hnnn;

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

switch ($cnnn){

case "0":

$hnnn++;

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

break;

default :

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

break;

};

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

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

$fore = $pages;

$next = $pages;

$fore -= 1;

$next += 1;

if ($fore 0) {

echo "a首頁/a";

echo "a前頁/a";

};

if ($pages $nnn) {

echo "a后頁/a";

echo "a尾頁/a";

};

echo "共".$nnn."頁";

$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){//在不滿頁數(shù)時(shí)跳出程序

break;

};

$i++;

};

//關(guān)閉連接

odbc_close($conn_id);

?

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

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

開始對(duì)一個(gè)Oracle數(shù)據(jù)庫服務(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ù)庫服務(wù)器的鏈接。

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

html

headtitle向ORACLE數(shù)據(jù)庫中插入數(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)頁顯示中文

putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");

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

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

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

想獲得更多有關(guān)在Microsoft Windows平臺(tái)上安裝支持PHP3的Apache服務(wù)器的知識(shí)以及更多有關(guān)Oracle數(shù)據(jù)庫的知識(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ù)庫名稱、用戶名稱和密碼連接數(shù)據(jù)庫。在成功連接的基礎(chǔ)上,ora_logon函數(shù)返回一個(gè)非零的連接ID并儲(chǔ)存在變量$conn中。

4.2 查詢

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

/*

* 連接數(shù)據(jù)庫并執(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ù)庫函數(shù)部分)

4.3 顯示結(jié)果

以下代碼演示了怎樣查詢數(shù)據(jù)庫并將結(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ù)庫函數(shù)部分)

4.4 基于HTTP的Oracle登錄

將以下代碼加在PHP頁面代碼之前以確認(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做的文件怎么連接數(shù)據(jù)庫?~

數(shù)據(jù)庫叫mysql。表是user。行和字段隨意。。

$conn

=

mysql_connect('數(shù)據(jù)庫地址',‘?dāng)?shù)據(jù)庫用戶名’,‘?dāng)?shù)據(jù)庫密碼’);

mysql_select_db('數(shù)據(jù)庫名');

$result

=

mysql_query('SQL查詢語句[select

*

from

表名(user)]');

$array

=

msql_fetch_array($result);

$array

就是數(shù)據(jù)庫中的第一行數(shù)據(jù),用一個(gè)循環(huán)

就可以取所有了

通過ThinkPHP文件建立數(shù)據(jù)庫數(shù)據(jù)表

if(!is_writable('config.php')){

emMsg('配置文件(config.php)不可寫。如果您使用的是Unix/Linux主機(jī),請(qǐng)修改該文件的權(quán)限為777。如果您使用的是Windows主機(jī),請(qǐng)聯(lián)系管理員,將此文件設(shè)為可寫');

}

if(!is_writable(EMLOG_ROOT.'/content/cache')){

emMsg('緩存文件不可寫。如果您使用的是Unix/Linux主機(jī),請(qǐng)修改緩存目錄?(content/cache)?下所有文件的權(quán)限為777。如果您使用的是Windows主機(jī),請(qǐng)聯(lián)系管理員,將該目錄下所有文件設(shè)為可寫');

}

$config?=?"?php\n"

."http://mysql?database?address\n"

."define('DB_HOST','$db_host');"

."\n//mysql?database?user\n"

."define('DB_USER','$db_user');"

."\n//database?password\n"

."define('DB_PASSWD','$db_pw');"

."\n//database?name\n"

."define('DB_NAME','$db_name');"

."\n//database?prefix\n"

."define('DB_PREFIX','$db_prefix');"

."\n//auth?key\n"

."define('AUTH_KEY','".getRandStr(32).md5($_SERVER['HTTP_USER_AGENT'])."');"

."\n//cookie?name\n"

."define('AUTH_COOKIE_NAME','EM_AUTHCOOKIE_".getRandStr(32,false)."');"

."\n";

$fp?=?@fopen('config.php',?'w');

$fw?=?@fwrite($fp,?$config);

if?(!$fw){

emMsg('配置文件(config.php)不可寫。如果您使用的是Unix/Linux主機(jī),請(qǐng)修改該文件的權(quán)限為777。如果您使用的是Windows主機(jī),請(qǐng)聯(lián)系管理員,將此文件設(shè)為可寫');

}

fclose($fp);

//密碼加密存儲(chǔ)

$PHPASS?=?new?PasswordHash(8,?true);

$adminpw?=?$PHPASS-HashPassword($adminpw);

$dbcharset?=?'utf8';

$type?=?'MYISAM';

$table_charset_sql?=?$DB-getMysqlVersion()??'4.1'???'ENGINE='.$type.'?DEFAULT?CHARSET='.$dbcharset.';'?:?'ENGINE='.$type.';';

if?($DB-getMysqlVersion()??'4.1'?){

$DB-query("ALTER?DATABASE?`{$db_name}`?DEFAULT?CHARACTER?SET?utf8?COLLATE?utf8_general_ci;",?true);

}

$widgets?=?Option::getWidgetTitle();

$sider_wg?=?Option::getDefWidget();

$widget_title?=?serialize($widgets);

$widgets?=?serialize($sider_wg);

define('BLOG_URL',?getBlogUrl());

$sql?=?"

DROP?TABLE?IF?EXISTS?{$db_prefix}blog;

CREATE?TABLE?{$db_prefix}blog?(

gid?int(10)?unsigned?NOT?NULL?auto_increment,

title?varchar(255)?NOT?NULL?default?'',

date?bigint(20)?NOT?NULL,

content?longtext?NOT?NULL,

excerpt?longtext?NOT?NULL,

alias?VARCHAR(200)?NOT?NULL?DEFAULT?'',

author?int(10)?NOT?NULL?default?'1',

sortid?int(10)?NOT?NULL?default?'-1',

type?varchar(20)?NOT?NULL?default?'blog',

views?int(10)?unsigned?NOT?NULL?default?'0',

comnum?int(10)?unsigned?NOT?NULL?default?'0',

attnum?int(10)?unsigned?NOT?NULL?default?'0',

top?enum('n','y')?NOT?NULL?default?'n',

sortop?enum('n','y')?NOT?NULL?default?'n',

hide?enum('n','y')?NOT?NULL?default?'n',

checked?enum('n','y')?NOT?NULL?default?'y',

allow_remark?enum('n','y')?NOT?NULL?default?'y',

password?varchar(255)?NOT?NULL?default?'',

template?varchar(255)?NOT?NULL?default?'',

PRIMARY?KEY??(gid),

KEY?date?(date),

KEY?author?(author),

KEY?sortid?(sortid),

KEY?type?(type),

KEY?views?(views),

KEY?comnum?(comnum),

KEY?hide?(hide)

)".$table_charset_sql."

INSERT?INTO?{$db_prefix}blog?(gid,title,date,content,excerpt,author,views,comnum,attnum,top,sortop,hide,allow_remark,password)?VALUES?(1,?'歡迎使用emlog',?'".time()."',?'恭喜您成功安裝了emlog,這是系統(tǒng)自動(dòng)生成的演示文章。編輯或者刪除它,然后開始您的創(chuàng)作吧!',?'',?1,?0,?0,?0,?'n',?'n',?'n',?'y',?'');

DROP?TABLE?IF?EXISTS?{$db_prefix}attachment;

CREATE?TABLE?{$db_prefix}attachment?(

aid?int(10)?unsigned?NOT?NULL?auto_increment,

blogid?int(10)?unsigned?NOT?NULL?default?'0',

filename?varchar(255)?NOT?NULL?default?'',

filesize?int(10)?NOT?NULL?default?'0',

filepath?varchar(255)?NOT?NULL?default?'',

addtime?bigint(20)?NOT?NULL?default?'0',

width?int(10)?NOT?NULL?default?'0',

height?int(10)?NOT?NULL?default?'0',

mimetype?varchar(40)?NOT?NULL?default?'',

thumfor?int(10)?NOT?NULL?default?0,

PRIMARY?KEY??(aid),

KEY?blogid?(blogid)

)".$table_charset_sql."

DROP?TABLE?IF?EXISTS?{$db_prefix}comment;

CREATE?TABLE?{$db_prefix}comment?(

cid?int(10)?unsigned?NOT?NULL?auto_increment,

gid?int(10)?unsigned?NOT?NULL?default?'0',

pid?int(10)?unsigned?NOT?NULL?default?'0',

date?bigint(20)?NOT?NULL,

poster?varchar(20)?NOT?NULL?default?'',

comment?text?NOT?NULL,

mail?varchar(60)?NOT?NULL?default?'',

url?varchar(75)?NOT?NULL?default?'',

ip?varchar(128)?NOT?NULL?default?'',

hide?enum('n','y')?NOT?NULL?default?'n',

PRIMARY?KEY??(cid),

KEY?gid?(gid),

KEY?date?(date),

KEY?hide?(hide)

)".$table_charset_sql."

DROP?TABLE?IF?EXISTS?{$db_prefix}options;

CREATE?TABLE?{$db_prefix}options?(

option_id?INT(?11?)?UNSIGNED?NOT?NULL?auto_increment,

option_name?VARCHAR(?255?)?NOT?NULL?,

option_value?LONGTEXT?NOT?NULL?,

PRIMARY?KEY?(option_id),

KEY?option_name?(option_name)

)".$table_charset_sql."

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('blogname','點(diǎn)滴記憶');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('bloginfo','使用emlog搭建的站點(diǎn)');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('site_title','');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('site_description','');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('site_key','emlog');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('log_title_style','0');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('blogurl','".BLOG_URL."');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('icp','');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('footer_info','');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('admin_perpage_num','15');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('rss_output_num','0');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('rss_output_fulltext','y');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('index_lognum','10');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('index_comnum','10');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('index_twnum','10');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('index_newtwnum','5');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('index_newlognum','5');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('index_randlognum','5');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('index_hotlognum','5');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('comment_subnum','20');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('nonce_templet','default');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('admin_style','default');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('tpl_sidenum','1');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('comment_code','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('comment_needchinese','y');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('comment_interval',60);

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('isgravatar','y');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('isthumbnail','y');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('att_maxsize','20480');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('att_type','rar,zip,gif,jpg,jpeg,png,txt,pdf,docx,doc,xls,xlsx');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('att_imgmaxw','420');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('att_imgmaxh','460');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('comment_paging','y');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('comment_pnum','10');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('comment_order','newer');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('login_code','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('reply_code','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('iscomment','y');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('ischkcomment','y');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('ischkreply','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('isurlrewrite','0');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('isalias','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('isalias_html','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('isgzipenable','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('isxmlrpcenable','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('ismobile','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('isexcerpt','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('excerpt_subnum','300');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('istwitter','y');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('istreply','n');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('topimg','content/templates/default/images/top/default.jpg');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('custom_topimgs','a:0:{}');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('timezone','8');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('active_plugins','');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('widget_title','$widget_title');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('custom_widget','a:0:{}');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('widgets1','$widgets');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('widgets2','');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('widgets3','');

INSERT?INTO?{$db_prefix}options?(option_name,?option_value)?VALUES?('widgets4','');

當(dāng)前名稱:PHP簡易文件數(shù)據(jù)庫,php數(shù)據(jù)庫配置文件
瀏覽地址:http://chinadenli.net/article33/dsgcdps.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作服務(wù)器托管網(wǎng)站排名做網(wǎng)站靜態(tài)網(wǎ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í)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)