當前位置:首頁 » 編程語言 » php函數庫

php函數庫

發布時間: 2022-12-10 01:50:18

㈠ 10 個經典php函數

1.
sys_getloadavg()
sys_getloadavt()可以獲得系
統負載情況。該函數返回一個包含三個元素的數組,每個元素分別代表系統再過去的1、5和15分鍾內的平均負載。
與其讓伺服器因負
載過高而宕掉,不如在系統負載很高時主動die掉一個腳本,sys_getloadavg()就是用來幫你實現這個功能的。
不過很遺憾,該函數在windows下無效。
2.
pack()
Pack()
能將md5()返回的32位16進制字元串轉換為16位的二進制字元串,可以節省存儲空間。
3.
cal_days_in_month()
cal_days_in_month()能夠返回指定月份共有多少天。
4.
_()
WordPress開發者經常能見到這個函數,還有
_e()。這兩個函數功能相同,與gettext()函數結合使用,能實現網站的多語言化。具體可參見PHP手冊的相關部分介紹。
5.
get_browser()
在發送頁面前先看看用戶的瀏覽器都能做些什麼是
不是挺好?get_browser()能獲得用戶的瀏覽器類型,以及瀏覽器支持的功能,不過首先你需要一個php_browscap.ini文件,用來給
函數做參考文件。
要注意,該函數對瀏覽器功能的判斷是基於該類瀏覽器的一般特性的。例如,如果用戶關閉了瀏覽器對
javaScript的支持,函數無法得知這一點。但是在判斷瀏覽器類型和OS平台方面,該函數還是很准確的。
6.
debug_print_backtrace()
這是一個調試用的函數,能幫助你發現代碼中的邏輯錯誤。要理
解這個函數,還是直接看個例子吧:
$a
=
0;
function
iterate()
{
global
$a;
if(
$a
<
10
)
recur();
echo
$a
.
「,
「;
}
function
recur()
{
global
$a;
$a++;
//
how
did
I
get
here?
echo
「\n\n\n」;
debug_print_backtrace();
if(
$a
<
10
)
iterate();
}
iterate();
#
OUTPUT:
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#2
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#3
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#2
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#3
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#4
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#5
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
7.
metaphone()
這個函數返回單詞的metaphone值,相同讀音的單詞具有相同的metaphone值,也就是說這個函數可以幫你判斷兩個單詞的讀音是否
相同。不過對中文就無效了。。。
8.
natsort()
natsort()能將一個數組以自然排序法
進行排列,直接看個例子吧:
$items
=
array(
「100
apples」,
「5
apples」,
「110
apples」,
「55
apples」
);
//
normal
sorting:
sort($items);
print_r($items);
#
Outputs:
#
Array
#
(
#
[0]
=>
100
apples
#
[1]
=>
110
apples
#
[2]
=>
5
apples
#
[3]
=>
55
apples
#
)
natsort($items);
print_r($items);
#
Outputs:
#
Array
#
(
#
[2]
=>
5
apples
#
[3]
=>
55
apples
#
[0]
=>
100
apples
#
[1]
=>
110
apples
#
)
9.
levenshtein()
Levenshtein()
告訴你兩個單詞之間的「距離」。它告訴你如果想把一個單詞變成另一個單詞,需要插入、替換和刪除多少字母。
看個例子吧:
$dictionary
=
array(
「php」,
「javascript」,
「css」
);
$word
=
「japhp」;
$best_match
=
$dictionary[0];
$match_value
=
levenshtein($dictionary[0],
$word);
foreach($dictionary
as
$w)
{
$value
=
levenshtein($word,
$w);
if(
$value
<
$match_value
)
{
$best_match
=
$w;
$match_value
=
$value;
}
}
echo
「Did
you
mean
the
『$best_match'
category?」;
10.
glob()
glob()會讓你覺得用
opendir(),
readdir()和closedir()來尋找文件非常蠢。
foreach
(glob(「*.php」)
as
$file)
echo
「$file\n」;

㈡ php是什麼

超文本預處理器

PHP(外文名:Hypertext Preprocessor,中文名:超文本預處理器)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。

PHP原始為Personal Home Page的縮寫,已經正式更名為 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。PHP於1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf為了要維護個人網頁而製作的一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C語言重新編寫,包括可以訪問資料庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和資料庫連接,產生簡單的動態網頁程序。在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔。並且發布了PHP1.0!在這的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以後越來越多的網站使用了PHP,並且強烈要求增加一些特性。比如循環語句和數組變數等等;在新的成員加入開發行列之後,Rasmus Lerdorf 在1995年6月8日將 PHP/FI 公開發布,希望可以透過社群來加速程序開發與尋找錯誤。這個發布的版本命名為 PHP 2,已經有 PHP 的一些雛型,像是類似 Perl的變數命名方式、表單處理功能、以及嵌入到 HTML 中執行的能力。程序語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。PHP/FI加入了對Mysql的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI。在1997年,任職於 Technion IIT公司的兩個以色列程序設計師:Zeev Suraski 和 Andi Gutmans,重寫了 PHP 的剖析器,成為 PHP 3 的基礎。而 PHP 也在這個時候改稱為PHP:Hypertext Preprocessor。經過幾個月測試,開發團隊在1997年11月發布了 PHP/FI 2。隨後就開始 PHP 3 的開放測試,最後在1998年6月正式發布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 發布後開始改寫PHP 的核心,這個在1999年發布的剖析器稱為 Zend Engine,他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發。在2000年5月22日,以Zend Engine 1.0為基礎的PHP 4正式發布,2004年7月13日則發布了PHP 5,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,像是強化的面向對象功能、引入PDO(PHP Data Objects,一個存取資料庫的延伸函數庫)、以及許多效能上的增強。PHP 4已經不會繼續更新,以鼓勵用戶轉移到PHP 5。2008年PHP 5成為了PHP唯一的有在開發的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強化。PHP 6 的開發也正在進行中,主要的改進有移除register_globals、magic quotes 和 Safe mode的功能。

PHP最新穩定版本:5.4.30(2013.6.26)PHP最新發布的正式版本:5.5.14(2014.6.24)PHP最新測試版本:5.6.0 RC2(2014.6.03)2013年6月20日,PHP開發團隊自豪地宣布推出PHP 5.5.0。此版本包含了大量的新功能和bug修復。需要開發者特別注意的一點是不再支持 Windows XP 和 2003 系統。2014年10月16日,PHP開發團隊宣布PHP 5.6.2可用。四安全相關的錯誤是固定在這個版本,包括修復cve-2014-3668,cve-2014-3669和cve-2014-3670。所有的PHP 5.6鼓勵用戶升級到這個版本。

PHP的特性包括:1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。3. PHP支持幾乎所有流行的資料庫以及操作系統。4. 最重要的是PHP可以用C、C++進行程序的擴展!

㈢ 、PHP有多少個內建的函數如何查看PHP手冊

提供了超過1000個內建的函數。
php框架對很多新手而言可能會覺得很難攀越,其實不然,只要知道一個框架的流程,明白原理了,基本類似框架都可以看懂,php框架真正的發展要從php5開始了,其實php4時代就有一些框架,但是因為框架並沒有給大家帶來多方便而覺得很復雜,速度沒有純php好,所以一直到了php5才有大的發展,php5的面向對象模型的修改對框架的發展起了很大的作用。
框架就是通過提供一個開發Web程序的基本架構,PHP開發框架把PHPWeb程序開發擺到了流水線上。換句話說,PHP開發框架有助於促進快速軟體開發(RAD),這節約了你的時間,有助於創建更為穩定的程序,並減少開發者的重復編寫代碼的勞動。這些框架還通過確保正確的資料庫操作以及只在表現層編程的方式幫助初學者創建穩定的程序。PHP開發框架使得你可以花更多的時間去創造真正的Web程序,而不是編寫重復性的代碼。

㈣ php引用函數的使用方法

php引用函數的使用方法

在技術學習的道路上,能掌握一些有用的技巧,對於初學者是非常有幫助的,下面是php引用函數的使用方法,希望大家會喜歡。

1.不要在你的應用程序中gzip輸出,讓apache來做

考慮使用ob_gzhandler?不,別這樣做。它沒有任何意義。PHP應該是來寫應用程序的。不要擔心PHP中有關如何優化在伺服器和瀏覽器之間傳輸的數據。

使用apache mod_gzip/mod_deflate通過.htaccess文件壓縮內容。

2.從php echo javascript代碼時使用json_encode

有些時候一些JavaScript代碼是從php動態生成的。

$images = array( 'myself.png' , 'friends.png' , 'colleagues.png');

$js_code = '';foreach($images as $image)

{

$js_code .= "'$image' ,";

}

$js_code = 'var images = [' . $js_code . ']; ';echo $js_code;//Output is var images = ['myself.png' ,'friends.png' ,'colleagues.png' ,];

放聰明點。使用json_encode:

$images = array( 'myself.png' , 'friends.png' , 'colleagues.png');

$js_code = 'var images = ' . json_encode($images);

echo $js_code;//Output is : var images = ["myself.png","friends.png","colleagues.png"]

這不是很整潔?

3.在寫入任何文件之前檢查目錄是否可寫

在寫入或保存任何文件之前,請務必要檢查該目錄是否是可寫的,如果不可寫的話,會閃爍錯誤消息。這將節省你大量的「調試」時間。當你工作於Linux時,許可權是必須要處理的,並且會有很多很多的許可權問題時,當目錄不可寫,文件無法讀取等的時候。

請確保你的應用程序盡可能智能化,並在最短的時間內報告最重要的信息。

$contents = "All the content";

$file_path = "/var/www/project/content.txt";

file_put_contents($file_path , $contents);

這完全正確。但有一些間接的問題。file_put_contents可能會因為一些原因而失敗:

父目錄不存在

目錄存在,但不可寫

鎖定文件用於寫入?

因此,在寫入文件之前最好能夠一切都弄明確。

$contents = "All the content";

$dir = '/var/www/project';

$file_path = $dir . "/content.txt";if(is_writable($dir))

{

file_put_contents($file_path , $contents);

}else{ die("Directory $dir is not writable, or does not exist. Please check");

}

通過這樣做,你就能得到哪裡文件寫入失敗以及為什麼失敗的准確信息。

4.改變應用程序創建的文件的許可權

當在Linux環境下工作時,許可權處理會浪費你很多時間。因此,只要你的php應用程序創建了一些文件,那就應該修改它們的許可權以確保它們在外面「平易近人」。否則,例如,文件是由「php」用戶創建的,而你作為一個不同的用戶,系統就不會讓你訪問或打開文件,然後你必須努力獲得root許可權,更改文件許可權等等。

// Read and write for owner, read for everybody elsechmod("/somedir/somefile", 0644);// Everything for owner, read and execute for otherschmod("/somedir/somefile", 0755);

5.不要檢查提交按鈕值來檢查表單提交

if($_POST['submit'] == 'Save')

{ //Save the things}

以上代碼在大多數時候是正確的,除了應用程序使用多語言的情況。然後「Save」可以是很多不同的東西。那麼你該如何再做比較?所以不能依靠提交按鈕的值。相反,使用這個:

if( $_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['submit']) )

{ //Save the things}

現在你就可以擺脫提交按鈕的值了。

6.在函數中總是有相同值的地方使用靜態變數

//Delay for some timefunction delay(){

$sync_delay = get_option('sync_delay'); echo "

Delaying for $sync_delay seconds...";

sleep($sync_delay); echo "Done

";

}

相反,使用靜態變數:

//Delay for some timefunction delay(){ static $sync_delay = null; if($sync_delay == null)

{

$sync_delay = get_option('sync_delay');

} echo "

Delaying for $sync_delay seconds...";

sleep($sync_delay); echo "Done

";

}

7.不要直接使用$ _SESSION變數

一些簡單的例子是:

$_SESSION['username'] = $username;

$username = $_SESSION['username'];

但是這有一個問題。如果你正在相同域中運行多個應用程序,會話變數會發生沖突。2個不同的應用程序在會話變數中可能會設置相同的鍵名。舉個例子,一個相同域的前端門戶和後台管理應用程序。

因此,用包裝函數使用應用程序特定鍵:

define('APP_ID' , 'abc_corp_ecommerce');//Function to get a session variablefunction session_get($key){

$k = APP_ID . '.' . $key; if(isset($_SESSION[$k]))

{ return $_SESSION[$k];

} return false;

}//Function set the session variablefunction session_set($key , $value){

$k = APP_ID . '.' . $key;

$_SESSION[$k] = $value; return true;

}

8.封裝實用輔助函數到一個類中

所以,你必須在一個文件中有很多實用函數:

function utility_a(){ //This function does a utility thing like string processing}function utility_b(){ //This function does nother utility thing like database processing}function utility_c(){ //This function is ...}

自由地在應用程序中使用函數。那麼你或許想要將它們包裝成一個類作為靜態函數:

class Utility{ public static function utility_a()

{

} public static function utility_b()

{

} public static function utility_c()

{

}

}//and call them as $a = Utility::utility_a();

$b = Utility::utility_b();

這里你可以得到的一個明顯好處是,如果php有相似名稱的內置函數,那麼名稱不會發生沖突。

從另一個角度看,你可以在相同的應用程序中保持多個版本的相同類,而不會發生任何沖突。因為它被封裝了,就是這樣。

9.一些傻瓜式技巧

使用echo代替print

使用str_replace代替preg_replace,除非你確定需要它

不要使用short tags

對於簡單的'字元串使用單引號代替雙引號

在header重定向之後要記得做一個exit

千萬不要把函數調用放到for循環控制行中。

isset比strlen快

正確和一致地格式化你的代碼

不要丟失循環或if-else塊的括弧。

不要寫這樣的代碼:

if($a == true) $a_count++;

這絕對是一種浪費。

這樣寫

if($a == true)

{

$a_count++;

}

不要通過吃掉語法縮短你的代碼。而是要讓你的邏輯更簡短。使用具有代碼高亮功能的文本編輯器。代碼高亮有助於減少錯誤。

10. 使用array_map快速處理數組

比方說,你要trim一個數組的所有元素。新手會這樣做:

foreach($arr as $c => $v)

{

$arr[$c] = trim($v);

}

但它可以使用array_map變得更整潔:

$arr = array_map('trim' , $arr);

這適用於trim數組$arr的所有元素。另一個類似的函數是array_walk。

11.使用php過濾器驗證數據

你是不是使用正則表達式來驗證如電子郵件,IP地址等值?是的,每個人都是這樣做的。現在,讓我們試試一個不同的東西,那就是過濾器。

php過濾器擴展程序將提供簡單的方法來有效驗證或校驗值。

12.強制類型檢查

$amount = intval( $_GET['amount'] );

$rate = (int) $_GET['rate'];

這是一種好習慣。

13.使用set_error_handler()將Php錯誤寫入到文件

set_error_handler()可以用來設置自定義的錯誤處理程序。在文件中編寫一些重要的錯誤用於日誌是個好主意。

14.小心處理大型數組

大型的數組或字元串,如果一個變數保存了一些規模非常大的東西,那麼要小心處理。常見錯誤是創建副本,然後耗盡內存,並得到內存溢出的致命錯誤:

$db_records_in_array_format; //This is a big array holding 1000 rows from a table each having 20 columns , every row is atleast 100 bytes , so total 1000 * 20 * 100 = 2MB$cc = $db_records_in_array_format; //2MB moresome_function($cc); //Another 2MB ?

當導入csv文件或導出表到csv文件時,上面這樣的代碼很常見。

像上面這樣做可能經常會由於內存限制而讓腳本崩潰。對於小規模的變數它不會出現問題,但當處理大型數組時一定要對此加以避免。

考慮通過引用傳遞它們,或者將它們存儲在一個類變數中:

$a = get_large_array();

pass_to_function(&$a);

這樣一來,相同的變數(並非其副本)將用於該函數。

class A{ function first()

{ $this->a = get_large_array(); $this->pass_to_function();

} function pass_to_function()

{ //process $this->a

}

}

盡快復原它們,這樣內存就能被釋放,並且腳本的其餘部分就能放鬆。

下面是關於如何通過引用來賦值從而節省內存的一個簡單示例。

<?phpini_set('display_errors' , true);

error_reporting(E_ALL);

$a = array();for($i = 0; $i < 100000 ; $i++)

{

$a[$i] = 'A'.$i;

}echo 'Memory usage in MB : '. memory_get_usage() / 1000000 . '

';

$b = $a;

$b[0] = 'B';echo 'Memory usage in MB after 1st : '. memory_get_usage() / 1000000 . '

';

$c = $a;

$c[0] = 'B';echo 'Memory usage in MB after 2st : '. memory_get_usage() / 1000000 . '

';

$d =& $a;

$d[0] = 'B';echo 'Memory usage in MB after 3st (reference) : '. memory_get_usage() / 1000000 . '

';

一個典型php 5.4機器上的輸出是:

Memory usage in MB : 18.08208Memory usage in MB after 1st : 27.930944Memory usage in MB after 2st : 37.779808Memory usage in MB after 3st (reference) : 37.779864

因此可以看出,內存被保存在第3份通過引用的副本中。否則,在所有普通副本中內存將被越來越多地使用。

15.在整個腳本中使用單一的資料庫連接

請確保你在整個腳本使用單一的資料庫連接。從一開始就打開連接,使用至結束,並在結束時關閉它。不要像這樣在函數內打開連接:

function add_to_cart(){

$db = new Database();

$db->query("INSERT INTO cart .....");

}function empty_cart(){

$db = new Database();

$db->query("DELETE FROM cart .....");

}

有多個連接也不好,會因為每個連接都需要時間來創建和使用更多的內存,而導致執行減緩。

在特殊情況下。例如資料庫連接,可以使用單例模式。

;

㈤ php中函數庫和類庫到底有什麼區別

首先你要知道什麼是函數,比如這一個
is_mail($str){//判斷的內容}
假如這個is_mail可以用來判斷用戶提交的數據是否是email格式的,這就是一個功能。判斷is_mail的功能。
使用的時候只要
if(is_mail($str))
{}
else
{}
函數庫
就是很多函數的集合。有很多功能,你就不用自己重新寫了,直接使用就可以。
而類庫,你要先理解類。
類,你可以理解為函數根據實際需求分類存放的一個地方。因為如果項目很大,就會有很多函數,如果不分類,有時候就很難找到了。根據函數的功能,把一類函數都整合到一個類裡面,使用起來就很方便。
比如資料庫操作類。
所有資料庫操作的函數都放在裡面了,你只要調用就可以了。
$db = new data();
$db->qurey();//使用$db類的qurey方法,其實就是使用qurey這個函數。
而類庫,就是很多可以直接使用的類。
總而言之,函數庫和類庫,可以大大提升開發效率。

㈥ ThinkPhp中怎麼調用自定義的函數庫

注意:自定義函數要放在項目應用目錄/common/common.php中。這里是關鍵。

模板變數的函數調用格式:{$varname|function1|function2=arg1,arg2,###}

說明:
{和$符號之間不能有空格,後面參數的空格就沒有問題;

###表示模板變數本身的參數位置;

支持多個函數,函數之間支持空格;

支持函數屏蔽功能,在配置文件中可以配置禁止使用的函數列表;

支持變數緩存功能,重復變數字串不多次解析。

使用例子:{$webTitle|md5|strtoupper|substr=0,3}
{$number|number_format=2}
{$varname|function1|function2=arg1,arg2,###}
復制代碼
實例:
復制代碼代碼如下:functionCate($cid){
$Cate=D('Cate');
$Cate=$Cate->where('id='.$cid)->find();
return$Cate['title'];
}
復制代碼
我想在模板中調用這個函數則在模板中可以這樣寫{$vo.cid|cate=###}
復制代碼

㈦ php的常用函數都有哪些要必須熟記的

首先是資料庫方面的函數,例如:mysql_connect,mysql_create_db,mysql_fetch_array,mysql_select_db,mysql_query,資料庫的函數眾多,最好寫成一個類,可以參考discuz,phpcms等,如果是php5,可以使用PDO php的數組很強大,很多地方要用到最好把關於數組的循環,分割,刪除等記住,例如:is_array,implode,explode,array_keys,array_merge等 還有就是記牢一些安全性的函數例如:addslashes,htmlspecialchars等 其他還有字元處理:subtr,strlen,trim等 初學者要盡量使用專業的編輯器,例如:UE,editplus等,有利於拼寫和記憶函數,少用IDE工具,例如zendstudio等,這些雖然方便,但是不利於記憶函數,加入沒有了IDE的情況下,就成了盲人了,雖有思路,但寫不出代碼來。

㈧ 如何正確理解PHP獲取顯示資料庫數據函數

1、PHP獲取顯示資料庫數據函數之 mysql_result()

mixed mysql_result(resource result_set, int row [,mixed field])
從result_set 的指定row 中獲取一個field 的數據. 簡單但是效率低.
舉例:

$link1=@mysql_connect("server1",
"webuser","password")

ordie("Couldnotconnect
tomysqlserver!");

@mysql_select_db("company")
ordie("Couldnotselectdatabase!");

$query="selectid,name
fromproctorderbyname";

$result=mysql_query($query);

$id=mysql_result($result,0,"id");

$name=mysql_result($result,0,"name");

mysql_close();

注意,上述代碼只是輸出結果集中的第一條數據的欄位值,如果要輸出所有記錄,需要循環處理.


for($i=0;$i<=mysql_num_rows($result);$i++)

{

$id=mysql_result($result,0,"id");

$name=mysql_result($result,0,"name");

echo"Proct:$name($id)";

}

注意,如果查詢欄位名是別名,則mysql_result中就使用別名.


2、PHP獲取顯示資料庫數據函數之mysql_fetch_row()

array mysql_fetch_row(resource result_set)
從result_set中獲取整行,把數據放入數組中.
舉例(注意和list 的巧妙配合):

$query="selectid,
namefromproctorderbyname";

$result=mysql_query($query);

while(list($id,$name)
=mysql_fetch_row($result)){

echo"Proct:$name($id)";

}


3、PHP獲取顯示資料庫數據函數之mysql_fetch_array()

array mysql_fetch_array(resource result_set [,int result_type])
mysql_fetch_row()的增強版.
將result_set的每一行獲取為一個關聯數組或/和數值索引數組.
默認獲取兩種數組,result_type可以設置:
MYSQL_ASSOC:返回關聯數組,欄位名=>欄位值
MYSQL_NUM:返回數值索引數組.
MYSQL_BOTH:獲取兩種數組.因此每個欄位可以按索引偏移引用,也可以按欄位名引用.

舉例:

$query="selectid,
namefromproctorderbyname";

$result=mysql_query($query);

while($row=mysql_fetch_array
($result,MYSQL_BOTH)){

$name=$row['name'];

//或者$name=$row[1];

$name=$row['id'];

//或者$name=$row[0];

echo"Proct:$name($id)";

}


4、PHP獲取顯示資料庫數據函數之mysql_fetch_assoc()

array mysql_fetch_assoc(resource result_set)
相當於 mysql_fetch_array($result, MYSQL_ASSOC)


5、PHP獲取顯示資料庫數據函數之mysql_fetch_object()

object mysql_fetch_object(resource result_set)
和mysql_fetch_array()功能一樣,不過返回的不是數組,而是一個對象.
舉例:

$query="selectid,name
fromproctorderbyname";

$result=mysql_query($query);

while($row=mysql_fetch_object
($result)){

$name=$row->name;

$name=$row->id;

echo"Proct:$name($id)";

}

以上這些函數就是PHP獲取顯示資料庫數據函數的全部總結。

㈨ PHP常用函數有哪些

常用函數比較多
如:字元串處理函數,數組函數,日期函數,MySQL函數,文件系統函數,GD函數庫等

㈩ PHP入門基礎教程

PHP入門基礎教程大全

PHP於1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf為了要維護個人網頁而製作的一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C語言重新編寫,包括可以訪問資料庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和資料庫連接,產生簡單的動態網頁程序。為幫助大家入門學習php,我為大家分享PHP入門知識教程如下:

1、嵌入方法:

類似ASP的<%,PHP可以是<?php或者是<?,結束符號是?>,當然您也可以自己指定。

2、引用文件:

引用文件的方法有兩種:require 及 include。

require 的使用方法如 require("MyRequireFile.php"); 。這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。

include 使用方法如 include("MyIncludeFile.php"); 。這個函數一般是放在流程式控制制的處理部分中。PHP 程序網頁在讀到 include 的文件時,才將它讀進來。這種方式,可以把程序執行時的流程簡單化。

3、注釋方法:

<?php

echo "這是第一種例子。 " ; // 本例是 C++ 語法的注釋 (PHP的注釋跟C差不多!)

/* 本例採用多行的

注釋方式 */

echo "這是第二種例子。 " ;

echo "這是第三種例子。 " ; # 本例使用 UNIX Shell 語法注釋

?>

4、變數類型:

$mystring = "我是字元串" ;

$NewLine = "換行了 " ;

$int1 = 38 ;

$float1 = 1.732 ;

$float2 = 1.4E+2 ;

$MyArray1 = array( "子" , "丑" , "寅" , "卯" );

這里引出兩個問題,首先PHP變數以$開頭,第二PHP語句以;結尾,可能ASP程序員會不適應。這兩個遺漏也是程序上大多錯誤所在。

5、運算符號:

數**非法字眼已被屏蔽**算:

符號 意義

+ 加法運算

- 減法運算

* 乘法運算

/ 除法運算

% 取余數

++ 累加

-- 遞減

字元串運算:

運算符號只有一個,就是英文的句號。它可以將字元串連接起來,變成合並的新字元串。類似ASP中的&

<?

$a = "PHP 4" ;

$b = "功能強大" ;

echo $a.$b;

?>

這里也引出兩個問題,首先PHP中輸出語句是echo,第二類似ASP中的<%=變數%>,PHP中也可以<?=變數?>。

邏輯運算:

符號 意義

< 小於

> 大於

<= 小於或等於

>= 大於或等於

== 等於

!= 不等於

&& 而且 (And)

and 而且 (And)

或者 (Or)

or 或者 (Or)

xor 異或 (Xor)

! 不 (Not)

學習目的:掌握php的流程式控制制

1、if..else 循環有三種結構

第一種是只有用到 if 條件,當作單純的判斷。解釋成 "若發生了某事則怎樣處理"。語法如下:

if (expr) { statement }

其中的 expr 為判斷的條件,通常都是用邏輯運算符號當判斷的條件。而 statement 為符合條件的執行部分程序,若程序只有一行,可以省略大括弧 {}。

範例:本例省略大括弧。

<?php

if ($state==1)echo "哈哈" ;

?>

這里特別注意的是,判斷是否相等是==而不是=,ASP程序員可能常犯這個錯誤,= 是賦值。

範例:本例的執行部分有三行,不可省略大括弧。

<?php

if ($state==1) {

echo "哈哈 ;

echo "<br>" ;

}

?>

第兩種是除了 if 之外,加上了 else 的條件,可解釋成 "若發生了某事則怎樣處理,否則該如何解決"。語法如下

if (expr) { statement1 } else { statement2 } 範例:上面的例子來修改成更完整的處理。其中的 else 由於只有一行執行的指令,因此不用加上大括弧。

<?php

if ($state==1) {

echo "哈哈" ;

echo "<br>";

}

else{

echo "呵呵";

echo "<br>";

}

?>

第三種就是遞歸的 if..else 循環,通常用在多種決策判斷時。它將數個 if..else 拿來合並運用處理。

直接看下面的例子

<?php

if ( $a > $b ) {

echo "a 比 b 大" ;

} elseif ( $a == $b ) {

echo "a 等於 b" ;

} else {

echo "a 比 b 小" ;

}

?>

上例只用二層的 if..else 循環,用來比較 a 和 b 兩個變數。實際要使用這種遞歸 if..else 循環時,請小心使用,因為太多層的循環容易使設計的邏輯出問題,或者少打了大括弧等,都會造成程序出現莫名其妙的問題。

2、 for 循環就單純只有一種,沒有變化,它的語法如下

for (expr1; expr2; expr3) { statement }

其中的 expr1 為條件的`初始值。expr2 為判斷的條件,通常都是用邏輯運算符號 (logical operators) 當判斷的條件。expr3 為執行 statement 後要執行的部份,用來改變條件,供下次的循環判斷,如加一..等等。而 statement 為符合條件的執行部分程序,若程序只有一行,可以省略大括弧 {}。

下例是用 for 循環寫的的例子。

<?php

for ( $i = 1 ; $i <= 10 ; $i ++) {

echo "這是第".$i."次循環<br>" ;

}

?>

3、 switch 循環,通常處理復合式的條件判斷,每個子條件,都是 case 指令部分。在實作上若使用許多類似的 if 指令,可以將它綜合成 switch 循環。

語法如下

switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }

其中的 expr 條件,通常為變數名稱。而 case 後的 exprN,通常表示變數值。冒號後則為符合該條件要執行的部分。注意要用 break 跳離循環。

<?php

switch ( date ( "D" )) {

case "Mon" :

echo "今天星期一" ;

break;

case "Tue" :

echo "今天星期二" ;

break;

case "Wed" :

echo "今天星期三" ;

break;

case "Thu" :

echo "今天星期四" ;

break;

case "Fri" :

echo "今天星期五" ;

break;

default:

echo "今天放假" ;

break;

}

?>

這里需要注意的是break;別遺漏了,default,省略是可以的。

很明顯的,上述的例子用 if 循環就很麻煩了。當然在設計時,要將出現機率最大的條件放在最前面,最少出現的條件放在最後面,可以增加程序的執行效率。上例由於每天出現的機率相同,所以不用注意條件的順序。

學會構建資料庫

在PHP中,MY SQL的命令行編輯可能會令初學者感到很麻煩,不要緊,你下載一個PHPMYADMIN安裝一下,以後建立編輯資料庫可以靠它了。

下面說一下它的使用。

進入了phpmyadmin後,我們首先需要建立一個資料庫,

Language (*) 這里選擇中文簡體,然後在左邊的 創建一個新的資料庫 這里填寫資料庫名字,點擊創建即可。

然後在左邊下拉菜單中選擇那個已經創建的資料庫。在下面的

在資料庫 shop 中創建一個新表 :

名字 :

欄位數 :

中填寫表名字和大致你認為的欄位數(不夠或者多了都不要緊,以後可以再添加或者預設),按執行。

然後就可以開始建立表了。

第一欄是欄位的名字;第二欄選擇欄位類型:

我們常用的是以下幾個:

1)VARCHAR,文本類型

2)INT,整數類型

3)FLOAT,浮點數類型

4)DATE,日期型

5)大家或許會問,自動添加的ID在哪裡?這個只要選擇INT類型,在後面的額外中選擇 auto_increment 就可以了。

建立了表以後,可以在左邊看到你建立的表,點擊以後,你可以:

1)按右邊的結構:查看修改表結構

2)按右邊的瀏覽:查看錶中的數據

3)按右邊的SQL:運行SQL語句

4)按右邊的插入:插入一行記錄

5)按右邊的清空:刪除表中所有記錄

6)按右邊的刪除:刪除表

還有一個很重要的功能就是導入和導出,當我們本機做好了程序和資料庫的時候,需要在伺服器上也有一個本地鏡像,如果是ASP的ACCESS簡單了,直接上傳MDB文件即可,如果是SQL SERVER也可以連接遠端伺服器進行導入。那麼MY SQL中你可以導出所有的SQL語句,到了遠端伺服器的PHPMYADMIN上,創建資料庫後按SQL,粘帖你剛才復制下來的所有本級生成的SQL語句即可。

學會連接資料庫

PHP簡直就是一個函數庫,豐富的函數使PHP的某些地方相當簡單。建議大家down一本PHP的函數手冊,總用的到。

我這里就簡單說一下連接MYSQL資料庫。

1、mysql_connect

打開 MySQL 伺服器連接。

語法: int mysql_connect(string [hostname] [:port], string [username], string [password]); 返回值: 整數

本函數建立與 MySQL 伺服器的連接。其中所有的參數都可省略。當使用本函數卻不加任何參數時,參數 hostname 的默認值為 localhost、參數 username 的默認值為 PHP 執行行程的擁有者、參數 password 則為空字元串 (即沒有密碼)。而參數 hostname 後面可以加冒號與埠號,代表使用哪個埠與 MySQL 連接。當然在使用資料庫時,早點使用 mysql_close() 將連接關掉可以節省資源。

2、 mysql_select_db

選擇一個資料庫。

語法: int mysql_select_db(string database_name, int [link_identifier]); 返回值: 整數

本函數選擇 MySQL 伺服器中的資料庫以供之後的資料查詢作業 (query) 處理。成功返回 true,失敗則返回 false。

最簡單的例子就是:

$conn=mysql_connect ("127.0.0.1", "", "");

mysql_select_db("shop");

連接機MY SQL資料庫,打開SHOP資料庫。在實際應用中應當加強點錯誤判斷。

學會讀取數據

先看兩個函數:

1、mysql_query

送出一個 query 字元串。 語法: int mysql_query(string query, int [link_identifier]); 返回值: 整數

本函數送出 query 字元串供 MySQL 做相關的處理或者執行。若沒有指定 link_identifier 參數,則程序會自動尋找最近打開的 ID。當 query 查詢字元串是 UPDATE、INSERT 及 DELETE 時,返回的可能是 true 或者 false;查詢的字元串是 SELECT 則返回新的 ID 值,當返回 false 時,並不是執行成功但無返回值,而是查詢的字元串有錯誤。

2、mysql_fetch_object 返回類資料。 語法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 類

本函數用來將查詢結果 result 拆到類變數中。若 result 沒有資料,則返回 false 值。

看一個簡單的例子:

<?

$exec="select * from user";

$result=mysql_query($exec);

while($rs=mysql_fetch_object($result))

{

echo "username:".$rs->username."<br>";

}

?>

當然,表user中有一個username的欄位,這就類似asp中的

<%

exec="select * from user"

set rs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

do while not rs.eof

response.write "username:"&rs("username")&"<br>"

rs.movenext

loop

%>

當然先要連接資料庫,一般我們 require_once('conn.php');而conn.php裡面就是上一次說的連接資料庫的代碼。

小小的兩條命令可以完成讀取數據的工作了

學會添加刪除修改數據

mysql_query($exec);

單這個語句就可以執行所有的操作了,不同的就是$exec這個sql語句

添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1']."',".$_POST['item1'].")";

刪除:$exec="delete from tablename where...";

修改:$exec="update tablename set item1='".$_POST['item1']."' where ...";

說到這里就要說一下表單和php變數傳遞,如果表單中的一個 <input name="item1" type="text" id="item1">

表單以POST提交的,那麼處理表單文件就可以用$_POST['item1']得到變數值,同樣以GET提交的就是$_GET['item1']

是不是很簡單?但是通常$exec會有問題,因為可能您的SQL語句會很長,您會遺漏.連接符,或者'來包圍字元型欄位。

我們可以注釋mysql_query($exec);語句用echo $exec;代替來輸出$exec以檢查正確性。如果您還不能察覺$exec有什麼錯誤的話,可以復制這個sql語句到phpmyadmin中執行,看看它的出錯信息。還有需要注意的是,我們不要使用一些敏感的字元串作為欄位名字,否則很可能會出現問題,比如說date什麼的。變數的命名,欄位的命名遵循一點規律有的時候對自己是一種好處,初學者並不可忽視其重要性。

學會SESSION的使用

SESSION的作用很多,最多用的就是站點內頁面間變數傳遞。

在頁面開始我們要session_start();開啟SESSION;

然後就可以使用SESSION變數了,比如說要賦值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很簡單吧。這里我們可能會使用到一些函數,比如說判斷是不是某SESSION變數為空,可以這么寫:empty($_SESSION['inum'])返回true or false。

下面綜合一下前面所說的我們來看一個登陸程序,判斷用戶名密碼是否正確。

登陸表單是這樣:login.php

<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg">

<tr class="tdbg">

<td colspan="2"><p align="center">Administrators Login</p></td>

</tr>

<tr class="tdbg">

<td><p align="center">Username</p></td>

<td><p align="center">

<input name="username" type="text" id="username">

</p></td>

</tr>

<tr class="tdbg">

<td><p align="center">Password</p></td>

<td><p align="center">

<input name="password" type="password" id="password">

</p></td>

</tr>

<tr class="tdbg">

<td colspan="2"><p align="center">

<input type="submit" name="Submit" value="Submit">

<input type="reset" name="Submit2" value="Clear">

</p></td>

</tr>

</table></td></form>

</tr>

</table>

處理文件是這樣

<?php

require_once('conn.php');

session_start();

$username=$_POST['username'];

$password=$_POST['password'];

$exec="select * from admin where username='".$username."'";

if($result=mysql_query($exec))

{

if($rs=mysql_fetch_object($result))

{

if($rs->password==$password)

{

$_SESSION['adminname']=$username;

header("location:index.php");

}

else

{

echo "<script>alert('Password Check Error!');location.href='login.php';</script>";

}

}

else

{

echo "<script>alert('Username Check Error!');location.href='login.php';</script>";

}

}

else

{

echo "<script>alert('Database Connection Error!');location.href='login.php';</script>";

}

?>

conn.php是這樣:

<?php

$conn=mysql_connect ("127.0.0.1", "", "");

mysql_select_db("shop");

?>

由於 $_SESSION['adminname']=$username;我們可以這樣寫驗證是否登陸語句的文件:checkadmin.php

<?php

session_start();

if($_SESSION['adminname']=='')

{

echo "<script>alert('Please Login First');location.href='login.php';</script>";

}

?>

做一個分頁顯示

關鍵就是用到了SQL語句中的limit來限定顯示的記錄從幾到幾。我們需要一個記錄當前頁的變數$page,還需要總共的記錄數$num

對於$page如果沒有我們就讓它=0,如果有<0就讓它也=0,如果超過了總的頁數就讓他=總的頁數。

$execc="select count(*) from tablename ";

$resultc=mysql_query($execc);

$rsc=mysql_fetch_array($resultc);

$num=$rsc[0];

這樣可以得到記錄總數

ceil($num/10))如果一頁10記錄的話,這個就是總的頁數

所以可以這么寫

if(empty($_GET['page']))

{

$page=0;

}

else

{

$page=$_GET['page'];

if($page<0)$page=0;

if($page>=ceil($num/10))$page=ceil($num/10)-1;//因為page是從0開始的,所以要-1

}

這樣$exec可以這么寫 $exec="select * from tablename limit ".($page*10).",10";

//一頁是10記錄的

最後我們需要做的就是幾個連接:

<a href="xxx.php?page=0">FirstPage</a>

<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>

<a href="xxx.php?page=<?=($page+1)?>">NextPage</a>

<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>

注意事項

1、注意不要漏了分號

2、注意不要漏了變數前的$

3、使用SESSION的時候注意不要遺漏session_start();

如果發生錯誤的時候,可以採用以下方法:

1、如果是SQL語句出錯,就注釋瞭然後輸出SQL語句,注意也要注釋調後續的執行SQL語句

2、如果是變數為空,大多是沒有傳遞到位,輸出變數檢查一下,檢查一下表單的id和name

3、如果是資料庫連接出錯,檢查是否正確打開MY SQL和是否遺漏了連接語句

4、注意縮進,排除括弧不區配的錯誤

在做大網站的時候,我的思路是先構建資料庫,確定每一個欄位的作用,和表之間的關系。然後設計後台界面,從添加數據開始做起,因為添加是否成功可以直接到資料庫裡面驗證,做好了添加再做顯示的頁面,最後才是兩者的結合。一般來說後台就包括添加刪除修改和顯示,後台沒有問題了,前台也沒有什麼大問題。前台還需要注意安全性和容錯還有就是輸出格式。

學會用PHP上傳文件和發郵件

上傳文件表單必須加上 enctype="multipart/form-data"

和 <input type="file" name="file">

下面看一下代碼:

$f=&$HTTP_POST_FILES['file'];

$dest_dir='uploads';//設定上傳目錄

$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我這里設置文件名為日期加上文件名避免重復

$r=move_uploaded_file($f['tmp_name'],$dest);

chmod($dest, 0755);//設定上傳的文件的屬性

上傳的文件名為date("ymd")."_".$f['name'] ,可以在以後插入到資料庫的時候用到,PHP實際上是把你上傳的文件從臨時目錄移動到指定目錄。move_uploaded_file($f['tmp_name'],$dest);這是關鍵

至於發郵件就更加簡單,可以使用mail()函數

mail("收件人地址","主題","正文","From:發件人 Reply-to:發件人的地址");

不過mail()需要伺服器的支持,在WINDOWS下還需要配置SMTP伺服器,一般來說外面的LINUX空間都行。

好像上傳文件和發郵件比ASP簡單很多,只要調用函數就可以了。ASP還需要用到伺服器的不同組件比如FSO、JMAIL什麼的。

;
熱點內容
sql資料庫導入數據 發布:2025-01-21 09:25:21 瀏覽:419
zynqsdk修改編譯選項 發布:2025-01-21 09:22:30 瀏覽:874
存儲器部件教學實驗 發布:2025-01-21 09:14:06 瀏覽:178
php安裝memcached擴展 發布:2025-01-21 09:07:06 瀏覽:545
手機緩存視頻到電腦上 發布:2025-01-21 09:07:02 瀏覽:977
如果知道伺服器ip有什麼風險 發布:2025-01-21 09:06:58 瀏覽:524
在壓縮曲線 發布:2025-01-21 09:05:31 瀏覽:909
華山演算法 發布:2025-01-21 08:44:48 瀏覽:366
如何在微信上再設置一個密碼 發布:2025-01-21 08:44:39 瀏覽:731
浙江伺服器搭建雲主機 發布:2025-01-21 08:41:38 瀏覽:452