導航:首頁 > 編程語言 > phpifor函數

phpifor函數

發布時間:2025-09-27 22:35:06

php及資料庫

PHP調用三種資料庫的方法

本文比較詳細的介紹PHP調用MySQL、ODBC以及ORACLE資料庫。

MySQL是一個小巧靈瓏的資料庫伺服器軟體,對於中、小型應用系統是非常理想的。除了支持標準的ANSI SQL語句外,最重要的是,它還支持多種平台,而在Unix/Linux系統上,MySQL支持多線程運行方式,從而能獲得相當好的性能。它和PHP、 Apache一樣,是屬於開放源代碼軟體。其官方網站是:,上面提供Windows,Linux,Unix版本的源代碼的下載。

注意,MySQL訪問函數都需要有相應的許可權才能運行。常用的相關函數介紹如下:

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

此函數開始一個對指定主機上的MySQL資料庫的連接。若該資料庫位於一個不同地埠,則在主機名後加上冒號和埠號。所有參數均為可選的,預設情況下分別對應為本地主機、用戶正在執行的腳本名和空。主機可以是IP地址或域名。

在腳本執行結束時,連接被自動關閉,也可以用mysql_close提前關閉。

(2)boolean mysql_create_db(資料庫名);

創建一個資料庫。注意必須用一個帶有創建資料庫許可權的帳號打開連接。

(3)boolean mysql_select_db(資料庫名,連接號);

選擇預設資料庫。

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

對指定資料庫進行查詢。如果SQL語句是select,則返回一個結果號,否則返回的值可以不理會。如果失敗,返回false.。

(5)array mysql_fetch_array(結果號);

取出下一行,返回一個數組.可以用數字下標訪問(第一個欄位是下標 0),也可以用字元串下標訪問(即使用各欄位名)。如已取了最後一行,返回 false.。

(6)mysql_fetch_row(結果號);

返回一個矩陣代表結果集中一行的所有域。每次調用都會產生下一行,直到沒有行剩下時返回false。每個域值都由一個從零開始的偏移量索引。這是從查詢中獲取結果的最快方法。

(7)integer mysql_num_rows(結果號);

返回結果集中行的數目

(8)integer mysql_num_fields(結果號);

返回結果集中域的數目。

(9)integer mysql_list_dbs();

向伺服器查詢資料庫列表。它返回一個結果指針,該指針可用於mysql_fetch_row函數及類似函數。

(10)mysql_list_tables(資料庫名);

獲取一個指向指定資料庫的表單列表的結果指針。該結果指針可用於任何從結果集中獲取行的函數。

(11)mysql_close(連接號);

關閉對資料庫的連接。連接必須是由mysql_connect打開的。該函數的使用不是嚴格必需的,因為在腳本結束時,所有非永久鏈路都會被自動關閉。

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

與mysql_connect完全相似,但建立一個"永久連接",該連接一經建立永不關閉,即使使用mysql_close函數或程序執行完畢也不關閉.下一次試圖建立永久連接時,系統如發現已存在一個永久連接,則直接返回該連接號而不重新創建。

下面是一個調用MYSQL資料庫並分頁顯示的例子。

<?

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

$host="localhost";

$user="user";

$password="psw";

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

//連接MySQL資料庫

mysql_connect("$host","$user","$password") or die("無法連接MySQL資料庫伺服器!");

$db = mysql_select_db("$dbname") or die("無法連接資料庫!");

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

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

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

$rowcount = $row["total"];//取出記錄數

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

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

if(!isset($pageno)) {

$pageno = 1; //在沒有設置pageno時,預設為顯示第1頁

}

if($pageno<1) {

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

}

if($pageno>$pagecount) {

$pageno = $pagecount; //若pageno比總共的頁數大,則把它設置為最後一頁

}

if($pageno>0) {

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

if($pageno>1){//顯示上一頁的褳接

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;//算出本頁第一條記錄在整個表中的位置(第一條記錄為0)

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

$rst = mysql_query($sql);//查詢本頁數據

$num_fields = mysql_num_fields($rst);//取得欄位總數

$i = 0;

while($i<$num_fields){//取得所有欄位的名字

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

$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)){//顯示本頁數據

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//顯示每個欄位的值

$field_value = $row[$field_name];

if($field_value==""){

echo "<td> </td>";

}

else{

echo "<td>$field_value</td>";

}

}

echo "</tr>";

}

echo "</table>";//表格輸出結束

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

}

else{

echo "目前該表中沒有任何數據!";

}

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

?>

開放資料庫連接(ODBC)已成為一種與資料庫進行通信的工業標准。PHP也提供了標準的介面,使得PHP能調用Access,SQL SERVER等資料庫。其相關函數是:

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

連接到一個ODBC資料庫源名字上。

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

在一個連接上執行查詢。

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

從一個結果集中獲取一行數據。Row參數是可選的,若為空缺,則返回下一個有效行。在結果集中不再剩餘行時返回false。

(4)boolean odbc_close(integer connection)

關閉一個資料庫的連接。若在該連接上有打開的事務,則返回一個錯誤,而且連接不會被關閉。

最後,還是看個分頁的例子:

<?

//設定每頁顯示條數

$show_num = 10;

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

//定義連接

$dsn = "localhost";

$user = "sa";

$password = "";

//計算總記錄數

$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");//將總記錄數放入$total_rs變數

}

//計算與頁有關的條數

$nnn = $total_rs / $show_num;//計算總頁數

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

$cnnnn = $nnn - $hnnn;

//計算所需總頁數

switch ($cnnn){

case "0":

$hnnn++;

$nnn = $hnnn;//總頁數

break;

default :

$nnn = $hnnn;//總頁數

break;

};

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

//計算頁面改變所需的條件

$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);

//取到循環的頂部

$cnum = ($pages-1) * $show_num;//計算當前的記錄游標的位置

//空循環到顯示記錄游標處
if ($cnum != 0){

for ($i=0;$i<=$cnum;odbc_fetch_row($cur));

};

$i=1;

//顯示記錄

while(odbc_fetch_row($cur)){

echo ;

if ($i == $show_num){//在不滿頁數時跳出程序

break;

};

$i++;

};

//關閉連接

odbc_close($conn_id);

?>

Oracle(甲骨文)是世界上最為流行的關系資料庫。它是大公司推崇的工業化的強有力的引擎。我們先看看其相關的函數:

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

開始對一個Oracle資料庫伺服器的連接。

(2)integer ora_open(integer connection)

打開給出的連接的游標。

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

在給出的連接上執行查詢。PHP生成一個指示器,解析查詢,並執行之。

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

解析一個查詢並准備好執行。

(5)boolean ora_exec(integer cursor)

執行一個先前由ora_parse函數解析過的查詢。

(6)boolean ora_fetch(integer cursor)

此函數會使得一個執行過的查詢中的行被取到指示器中。這使得您可以調用ora_getcolumn函數。

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

返回當前的值。列由零開始的數字索引。

(8)boolean ora_logoff(integer connection)

斷開對資料庫伺服器的鏈接。

以下是向ORACLE資料庫插入數據的示常式序:

<html>

<head><title>向ORACLE資料庫中插入數據</title></head>

<body>

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

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

<tr>

<th>ID</th>

<th>name</th>

<th>Description</th>

</tr>

<tr>

<td><input type="text" name="name" maxlength="50" size="10"></td>

<td><input type="text" name="email" maxlength="255" size="30"></td>

<td><input 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>

<?

//先設置兩個環境變數ORACLE_HOME,ORACLE_SID

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

putenv("ORACLE_SID=ora8");

//設置網頁顯示中文

putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");

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

//庫表test有ID,name,Description三項

$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你可以輕松的連接到資料庫,請求數據並將其顯示在你的web站點中,甚至修改資料庫中的數據。 MySQL是一種很流行的資料庫,並且在互聯網中有許多有關PHP與MySQL的教程。MySQL是免費的,這一點也許就吸引了不少人。由於其廣泛應用, 我就不想在這里贅述MySQL的使用方法了。Oracle被大量在企業應用中採用,因此我們就利用Oracle來介紹PHP與資料庫的連接。我們當然不會 提及Oracle資料庫的設計原理,原因是這已經超出了我們的討論范圍。
PHP提供了兩套函數與Oracle連接,分別是ORA_和OCI函數。其中ORA_函數略顯陳舊。OCI函數更新據說更好一些。兩者的使用語法幾乎相差無幾。如前所述,你的PHP安裝選項應該可以支持兩者的使用。
想獲得更多有關在Microsoft Windows平台上安裝支持PHP3的Apache伺服器的知識以及更多有關Oracle資料庫的知識,請查閱以下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資料庫名稱、用戶名稱和密碼連接資料庫。在成功連接的基礎上,ora_logon函數返回一個非零的連接ID並儲存在變數$conn中。

4.2 查詢

假設與資料庫已經連接就緒,下面我們就來實際的應用對資料庫的查詢。下面的代碼演示了一個連接並查詢的典型例子:
/*
* 連接資料庫並執行查詢
*/
function printoraerr($in_cur)
{
// 檢查Oracle是否出錯
// 如果存在錯誤則顯示
// 當指針被激活時每次請求Oracle後調用該函數
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 al";
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";
?>
(譯者註:以上代碼段缺少注釋,請讀者參考PHP Manual的Oracle資料庫函數部分)

4.3 顯示結果

以下代碼演示了怎樣查詢資料庫並將結果輸出:
function printoraerr($in_cur, $conn)
{
// 檢查Oracle是否出錯
// 如果存在錯誤則顯示
// 當指針被激活時每次請求Oracle後調用該函數
// 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);
?>
(譯者註:以上代碼段缺少注釋,請讀者參考PHP Manual的Oracle資料庫函數部分)

4.4 基於HTTP的Oracle登錄

將以下代碼加在PHP頁面代碼之前以確認Oracle登錄。注意你必須正確設定$ 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中session_destroy()的作用

Session_destroy()銷毀當前會話中的所有數據,但不重置與當前會話關聯的全局變數,也不重置會話cookie。如果需要再次使用會話變數,則必須再次調用session_start()函數。

為了完全銷毀會話,例如當用戶注銷時,必須同時重置會話ID。如果會話ID是由cookie傳遞的,那麼還會調用setcookie()函數來刪除客戶機的會話cookie。

使用方法:

1.要在PHP中使用會話,首先需要啟動會話。要啟動會話,您需要使用PHP的內置函數session_start(),如圖所示。

❸ 關於PHP function內部include文件導致引用文件內部調用的類未初始化錯誤的問題,求高手解答。

意思就是在一個非對象上調用一個成員方法。
我猜想你的代碼應該是:
$db = new DB();//這個就是定義在你的conn.php中的資料庫操作類
$db->Query($sql);
如果是這樣的話,首先要確認你是不是用上面的這種調用方式,你可以先用var_mp($db)去驗證下有沒有成功創建一個資料庫操作類,其次確定 Query 方法沒有用private 修飾符。
你貼出來的代碼不是很全,建議你把類貼出來

❹ php給寫內容到文件的指定位置,用什麼函數啊

fopen($filename, 'ab');
fseek($fp, $int); // int 為你想寫的位置距離文件開頭的位置
fwrite($fp, $content);

-------------
fseek 還有第三個參數 支持更多其他的用法,具體查看php手冊
-------------
看了下手冊,有這么一句:
Note: 如果使用附加模試("a" 或 "a+"),任何寫入文件數據都會被附加上去,而文件的位置將會被忽略。
所以好像只能是在open的時候 用 w
------------
那就只能先讀,然後再處理,再寫了。
類似於:

$s = file_get_contents($file);
$pos = strlen($s) - 38;
$s = substr($s, 0, $pos).$_POST['illegal'].substr($s, $pos);

❺ php如何根據某一個value獲取其key

在一些PHP的場景之中可能會遇到,在PHP的數組中需要根據其中某一個value值來獲取得到其key的值。這個時候就需要使用到PHP數組函數中的array_search()這個方法。

$array = array('test0','test1','test2');

$array1 = array('test0','test1','test2','test1');

$key = array_search('test1',$array);

$key1 = array_search('test1',$array1);

echo $key;

echo $key1;

輸出都是1

如果有重復的value輸出第一個相匹配的key

(5)phpifor函數擴展閱讀

使用方法:

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;

$key = array_search('red', $array); // $key = 1;

//array_key_exists()的使用方法

$search_array = array('first' => 1, 'second' => 4);

if (array_key_exists('first', $search_array)) {

echo "The 'first' element is in the array";

}

//相關函數有

array_keys() - Return all the keys or a subset of the keys of an array

array_values() - Return all the values of an array

array_key_exists() - Checks if the given key or index exists in the array

❻ php中的move_uploaded_file()函數問題

首先復習一下基礎
move_uploaded_file — 將上傳的文件移動到新位置

說明
bool move_uploaded_file ( string $filename, string $destination )

本函數檢查並確保由 filename 指定的文件是合法的上傳文件(即通過 PHP 的 HTTP POST 上傳機制所上傳的)。如果文件合法,則將其移動為由 destination 指定的文件。

如果 filename 不是合法的上傳文件,不會出現任何操作,move_uploaded_file() 將返回 FALSE。

如果 filename 是合法的上傳文件,但出於某些原因無法移動,不會出現任何操作,move_uploaded_file() 將返回 FALSE。此外還會發出一條警告。

這種檢查顯得格外重要,如果上傳的文件有可能會造成對用戶或本系統的其他用戶顯示其內容的話。

$location在前面定義了 ./temp/
在php中
./表示當前目錄
../表示上級目錄
./temp表示當前目錄里的temp目錄

注意該目錄不能為只讀模式,還要注意,在win2003和xp\vista中,設置該文件夾的許可權,添加一個everyone用戶(擁有全部許可權包括讀寫和列表)

建議你去掉後面的or $event="Failure"(不要去掉分號),根據文檔

-------------------------------------------
如果 filename 是合法的上傳文件,但出於某些原因無法移動,不會出現任何操作,move_uploaded_file() 將返回 FALSE。此外還會發出一條警告。

----------------------------------------------

你就可以根據這條警告獲得你的錯誤原因,前提是你沒在程序里或php.ini里設置屏蔽warning

如果是新手學習,不建議屏蔽warning,這樣會獲得更多的調試信息和程序優化建議.除非你對改語言已經非常熟悉,則可以屏蔽

閱讀全文

與phpifor函數相關的資料

熱點內容
天貓app在哪裡邀人 瀏覽:718
php數組首字母大寫 瀏覽:512
共享寶馬是什麼app 瀏覽:854
st單片機ad問題 瀏覽:277
phpifor函數 瀏覽:572
完整的Java源碼 瀏覽:84
mac怎麼輸入終端命令 瀏覽:975
無法解壓文件系統映像文件 瀏覽:431
linuxtomcat命令 瀏覽:683
解壓之作完整版 瀏覽:785
bds加密文檔 瀏覽:202
外網怎麼遠程的伺服器地址 瀏覽:566
phpsql注入防範 瀏覽:262
自動搶紅包python 瀏覽:147
測試時連接不上伺服器怎麼處理 瀏覽:478
spring動態編譯原理 瀏覽:954
杜蘭特直播用的是什麼app 瀏覽:92
python轉換c語言 瀏覽:63
java命令執行jar包 瀏覽:222
javaabap 瀏覽:690