真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

計(jì)算機(jī)數(shù)據(jù)庫是PHP嗎,計(jì)算機(jī)PHP

php可以做數(shù)據(jù)庫嘛?

php是可以做數(shù)據(jù)庫的交互的哦,php還是一門比較全面的語言,如果有意向去學(xué)php建議你去找個好點(diǎn)的學(xué)校去php,學(xué)會了肯定是非常強(qiáng)大的

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),山海關(guān)企業(yè)網(wǎng)站建設(shè),山海關(guān)品牌網(wǎng)站建設(shè),網(wǎng)站定制,山海關(guān)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,山海關(guān)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

PHP在電腦中是什么意思???

PHP

PHP,一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風(fēng)格有類似于C語言,現(xiàn)在被很多的網(wǎng)站編程人員廣泛的運(yùn)用。PHP 獨(dú)特的語法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語法。它可以比 CGI 或者 Perl 更快速的執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在服務(wù)器端執(zhí)行,充分利用了服務(wù)器的性能;PHP執(zhí)行引擎還會將用戶經(jīng)常訪問的PHP程序駐留在內(nèi)存中,其他用戶再一次訪問這個程序時就不需要重新編譯程序了,只要直接執(zhí)行內(nèi)存中的代碼就可以了,這也是PHP高效率的體現(xiàn)之一。PHP具有非常強(qiáng)大的功能,所有的CGI或者JavaScript的功能PHP都能實(shí)現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。

PHP 最初是1994年Rasmus Lerdorf創(chuàng)建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統(tǒng)計(jì)他自己網(wǎng)站的訪問者。后來又用C語言重新編寫,包括可以訪問數(shù)據(jù)庫。在1995年以Personal Home Page Tools (PHP Tools) 開始對外發(fā)表第一個版本,Lerdorf寫了一些介紹此程序的文檔,并且發(fā)布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計(jì)數(shù)器等簡單的功能。以后越來越多的網(wǎng)站使用了PHP,并且強(qiáng)烈要求增加一些特性,比如循環(huán)語句和數(shù)組變量等等,在新的成員加入開發(fā)行列之后,在1995年中,PHP2.0發(fā)布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對mSQL的支持,從此建立了PHP在動態(tài)網(wǎng)頁開發(fā)上的地位。到了1996年底,有15000個網(wǎng)站使用 PHP/FI;時間到了1997年中,使用PHP/FI的網(wǎng)站數(shù)字超過五萬個。而在1997年中,開始了第三版的開發(fā)計(jì)劃,開發(fā)小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。

PHP的特性

PHP的特性包括:

開放的源代碼:所有的PHP源代碼事實(shí)上都可以得到。

PHP是免費(fèi)的。

php的便捷性 : php十分便捷

基于服務(wù)器端:由于PHP是運(yùn)行在服務(wù)器端的腳本,可以運(yùn)行在UNIX、LINUX、WINDOWS下。

嵌入HTML:因?yàn)镻HP可以嵌入HTML語言,所以學(xué)習(xí)起來并不困難。

簡單的語言:PHP堅(jiān)持腳本語言為主,與Java和C++不同。

效率高:PHP消耗相當(dāng)少的系統(tǒng)資源。

圖像處理:用PHP動態(tài)創(chuàng)建圖像

面向?qū)ο瘢涸趐hp4,php5 中,面向?qū)ο蠓矫娑加辛撕艽蟮母倪M(jìn),現(xiàn)在php完全可以用來開發(fā)大型商業(yè)程序。

PHP 3與PHP 4

【PHP3】

PHP3跟Apache服務(wù)器緊密結(jié)合的特性;加上它不斷的更新及加入新的功能;而且?guī)缀踔С炙兄髁髋c非主流數(shù)據(jù)庫;再以它能高速的執(zhí)行效率,使得PHP在1999年中的使用站點(diǎn)已經(jīng)超過了150000萬。加上它的源代碼完全公開,在 Open Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數(shù)庫加入,以及不停地更新的活力,使得PHP無論在UNIX、LINUX或是Windows的平臺上都可以有更多新的功能。它提供豐富的函數(shù),使得在程序設(shè)計(jì)方面有著更好的支持。

【PHP4】

PHP4.0整個腳本程序的核心大幅更動,讓程序的執(zhí)行速度,滿足更快的要求。在最佳化之后的效率,已較傳統(tǒng)CGI或者ASP等程序有更好的表現(xiàn)。而且還有更強(qiáng)的新功能、更豐富的函數(shù)庫。無論您接不接受,PHP 都將在 Web CGI 的領(lǐng)域上,掀起巔覆性的革命。對于一位專業(yè)的Web Master 而言,它將也是必修課程之一。

PHP 4.0是更有效的,更可靠的動態(tài)Web頁開發(fā)工具,在大多數(shù)情況運(yùn)行比 PHP 3.0要快,其腳本描述更強(qiáng)大并且更復(fù)雜, 最顯著的特征是速率比的增加。PHP4.0這些優(yōu)異的性能是PHP 腳本引擎重新設(shè)計(jì)產(chǎn)生的結(jié)果:引擎由 AndiGutmans 和 Zeev Suraski從底層全面重寫。PHP4.0 腳本引擎 ——Zend 引擎,使用了一種更有效的編譯——執(zhí)行方式, 而不是PHP 3.0 采用的執(zhí)行 ——當(dāng)解析時模型。

PHP4的優(yōu)越性

PHP4在3.0版的基礎(chǔ)上增加或增強(qiáng)了許多有用的特征,主要如下:

(1)別名:在PHP4中,可以利用引用為變量賦值,這給編程帶來了很大的靈活性。

(2)擴(kuò)充了API 模塊:PHP 4.0 為擴(kuò)展的 API 模塊的提供了擴(kuò)展PHP接口模塊, 它比舊的 API 版本顯著地快。 PHP 模塊已有的及最常用的接口多數(shù)被轉(zhuǎn)換到使用這個擴(kuò)展的接口。

(3)自動資源釋放:PHP4增加了引用計(jì)數(shù)功能,這種新技術(shù)的引入使PHP4具有了自動內(nèi)存管理功能,減輕了開發(fā)人員的負(fù)擔(dān)。

(4)布爾類型:PHP 4.0 支持布爾類型。

(5)進(jìn)程生成:在 UNIX 環(huán)境下的 PHP 4.0 提供了一個很智能和通用的生成進(jìn)程, 使用了一種名為基于automake/libtool的系統(tǒng)生成技術(shù)。

(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用于Windows 環(huán)境 ) 可以無縫地存取和訪問 COM 對象。

(7)與PHP 3.0 兼容性很好:PHP 4.0 是與 PHP 3.0 代碼向后兼容性接近100% 。由于 PHP 4 的改進(jìn)的體系結(jié)構(gòu),兩者有一些細(xì)微的差別,但是大多數(shù)人將可能永遠(yuǎn)不可能遇上這種情況。

(8)配置:PHP4重新設(shè)計(jì)和增強(qiáng)了PHP.ini文件,這使得用PHP.ini來配置PHP顯得極為容易,這個文件可以在運(yùn)行時被Apache(unix系統(tǒng))或由Windows 注冊(Windows 環(huán)境)。

(9)加密支持:PHP4實(shí)現(xiàn)了完整的加密, 這些加密功能是一個完整的mycrypt庫,并且 PHP 4.0 支持哈希函數(shù)。Blowfish,TripleDES,MD5,并且SHA1 也是可使用的一些加密算法。

(10)類型檢查:PHP 4.0 支持同一操作符用于評類型檢查:===( 3 等號運(yùn)算符 ), 為在兩個值和其類型之間作檢查。例如, 3 ===3 將視為假 ( 類型是不同的 ), 而 3 ==3 ( 相等判斷 ) 將視為真。

(11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你會為通過一個調(diào)制解調(diào)器連接下載一個大文件提供一個接口。然而, 如果你確實(shí)有需要,可以使用PHP 。

(12)PHP4新增函數(shù)或功能增強(qiáng)函數(shù):PHP 4.0 新增了許多函數(shù),同時也將許多現(xiàn)有的函數(shù)功能進(jìn)行了增強(qiáng),以下是一些例子。 array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset()

(13)here打?。篜HP 4.0 的Here打印是與Perl類似的, 盡管完全不相同。Here是打印大容量文章的一個有用的方法,例如在 HTML文件中,不會漏掉任何一個字符,例如目錄標(biāo)記。

(14)HTTP Session fallback 系統(tǒng):為 HTTP Session管理的一個 fallback 系統(tǒng)在 PHP 4.0被實(shí)現(xiàn) 。缺省情況下,Session標(biāo)識符由cookies存儲。如果沒有cookies支持或一項(xiàng)cookies任務(wù)失敗,Session標(biāo)識符自動被創(chuàng)建并在 URL 的查詢字符串中被攜帶。

(15)ISAPI 支持:PHP 4.0 能作為一個個性化的 ISAPI 模塊作為 IIS插件 。這比 PHP 3.0 更有效, 它作為一個外部的程序來運(yùn)行。

(16)內(nèi)存:PHP 4.0 能更有效的使用內(nèi)存, 導(dǎo)致較少的內(nèi)存占用消耗,這主要?dú)w功于引用計(jì)數(shù)技術(shù)的實(shí)現(xiàn)。

(17)其他類成員函數(shù):在 PHP 4.0 你能在成員函數(shù)本身的作用域或全局范圍內(nèi)調(diào)用其他類的成員函數(shù)。例如,你能用一個子函數(shù)覆蓋父函數(shù),并在子函數(shù)中調(diào)用父函數(shù)。

(18)多維數(shù)組:在 PHP 4.0 ,利用GET,POST,Cookies的進(jìn)行的數(shù)據(jù)傳輸支持多維數(shù)組。

(19)個性化的 HTTP Session支持:HTTP Session處理, 包括 fallback 系統(tǒng)管理,在 PHP 4.0被它的新庫函數(shù)實(shí)現(xiàn) 。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫函數(shù), 它比把Session直接地由 PHP 支持慢了許多。

(20)個性化的 Java 支持:PHP 4.0 支持和java的交互。這種個性化的Java 支持為PHP 在 Java 對象上創(chuàng)建和使用方法提供一個簡單并且有效的工具。

21)對象和數(shù)嵌套組:PHP 4.0 實(shí)現(xiàn)了功能更加強(qiáng)大的對象, 移去了 PHP 3.0存在的種種句法限制。對象能在數(shù)組以內(nèi)被嵌套并且反過來也如此, 可以根據(jù)你的需要實(shí)現(xiàn)嵌套。

(22)面向?qū)ο蟮木幊蹋篜HP 4.0 為面向?qū)ο蟮木幊毯蜆?gòu)造類及對象提供擴(kuò)展的功能和新特征。PHP4實(shí)現(xiàn)了對象重載,引用技術(shù)等新技術(shù)。

(23)對象重載支持:對象重載語法允許第三方的基于面向?qū)ο蟮念悗焓褂?PHP4 的面向?qū)ο蟮奶卣鞔嫒∷麄冏陨淼墓δ堋J褂眠@個特征的一個 COM 模塊已經(jīng)被實(shí)現(xiàn)了。

(24)輸出緩沖支持:PHP 提供了一個輸出緩沖函數(shù)集合。輸出緩沖支持允許你寫包裹函數(shù)功能壓縮緩沖區(qū)。在 PHP4 的輸出緩沖支持允許 HTML 頭信息存放, 無論 HTML的正文是否輸出。頭信息( (header(), content type, and cookies ) 不采用緩沖 。

(25)增加了PCRE 庫:PHP 4.0 包括一個 Perl 兼容的正則表達(dá)式 (PCRE ) 庫, 和正常regex庫一起與 PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規(guī)表達(dá)式之間有一些細(xì)微差別。

(26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設(shè)計(jì), 使用的 PHP 的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在運(yùn)行時間操作 ( 在 Apache環(huán)境 下 ) 或由 Windows 注冊表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自動地在所有相關(guān)的模塊中被支持。

(27)引用計(jì)數(shù):PHP 4.0 為系統(tǒng)中的每個數(shù)值提供了引用計(jì)數(shù), 包括資源。一旦一個資源不再被任何變量引用,它自動地被釋放以節(jié)省內(nèi)存資源。利用這個特征的最明顯的例子一個內(nèi)置SQL查詢的循環(huán)語句。在PHP 3.0中 ,每次遞歸另外的 SQL 結(jié)果集合重復(fù)申請內(nèi)存,直到腳本執(zhí)行完畢,這些結(jié)果集合占用的內(nèi)存才被釋放。

(28)支持引用:通過引用可以改變一個變量的值。

(29)函數(shù)的運(yùn)行時綁定:PHP 4.0 的運(yùn)行時間綁定功能允許你在他們被聲明以前調(diào)用, 無論聲明是否在代碼以后或是在運(yùn)行時間。

(30)類的運(yùn)行時信息:PHP 4.0 支持在運(yùn)行時刻存取下列類信息:一個對象的類名,一個對象的父類的類名字,以及對象函數(shù)所在的名字。

(31)服務(wù)器抽象層:為支持Web服務(wù)器提供了增強(qiáng)型 SAPI ( 服務(wù)器 API ) 接口,是 PHP 4。0 不可分的一部分。這個服務(wù)器抽象層,提供了通用的WEB服務(wù)器接口支持,支持多線程WEB服務(wù)器,為大多數(shù)的WEB服務(wù)器提供透明的支持, 這些服務(wù)器包括 Apache ,IIS ( ISAPI ), 以及 AOL 服務(wù)器。

(32)語法的點(diǎn)亮顯示:PHP 4.0 語法的點(diǎn)亮顯示允許開發(fā)者看見源代碼而不是腳本, 這個功能比PHP 3。0中的更有效。它跑得更快,更執(zhí)行得更好,并且產(chǎn)生更緊湊的HTML代碼。

(33)由引用改變變量的值:PHP 4.0 由引用支持可變的賦值, “關(guān)聯(lián)”的2個變量之中個的任何一個的值被改變,另外的變量的值同樣被改變,這類似與C中的指針類型。

(34)在引用字符串中的變量引用:PHP 4.0 增強(qiáng)了在引用字符串中的變量引用。

數(shù)據(jù)庫方面

PHP 在數(shù)據(jù)庫方面的豐富支持,也是它迅速走紅的原因之一,它支持下列的數(shù)據(jù)庫或是數(shù)據(jù)文件:

· Adabas D

· DBA

· dBase

· dbm

· filePro

· Informix

· InterBase

· mSQL

· Microsoft SQL Server

· MySQL

· Solid

· Sybase

· ODBC

· Oracle 8

· Oracle

· PostgreSQL

而在 Internet 上它也支持了相當(dāng)多的通訊協(xié)議 (protocol),包括了與電子郵件相關(guān)的 IMAP, POP3;網(wǎng)管系統(tǒng) SNMP;網(wǎng)絡(luò)新聞 NNTP;帳號共用 NIS;全球信息網(wǎng) HTTP 及 Apache 服務(wù)器;目錄協(xié)議 LDAP 以及其它網(wǎng)絡(luò)的相關(guān)函數(shù)。

除此之外,用 PHP 寫出來的 Web 后端 CGI 程序,可以很輕易的移植到不同的操作系統(tǒng)上。例如,先以 Linux 架的網(wǎng)站,在系統(tǒng)負(fù)荷過高時,可以快速地將整個系統(tǒng)移到 SUN 工作站上,不用重新編譯 CGI 程序。面對快速發(fā)展的 Internet,這是長期規(guī)劃的最好選擇。

變數(shù)類型:

PHP有好多種變數(shù); 主要有這些:

- 數(shù)字 (integer - 例: 32)

- 布林值 (boolean - 例: TRUE)

- 字串 (string - 例: 'a string of text')

- NULL

- 資源(resource)

- 陣列 (array - 例: arrayname[2])

語法:

語法有三種:

//comment

/* comment */

# comment

基本的 "Control Structures":

* if ... else

if (condition == true) ;

* if ... else then

if (condition == true)

else if (condition2 == true) ;

一個PHP實(shí)例:

html

head

titleFirst program/title

/head

body

?php

echo "hello world";

?

/body

/html

請看:

php官方網(wǎng)站:

php對面向?qū)ο蟮闹С?/p>

面向?qū)ο缶幊痰母拍睿?/p>

不同的作者之間說法可能不一樣,但是一個OOP語言必須有以下幾方面:

抽象數(shù)據(jù)類型和信息封裝

繼承

多態(tài)

在PHP中是通過類來完成封裝的:

?php

class Something {

// 在OOP類中,通常第一個字符為大寫

var $x;

function setX($v) {

// 方法開始為小寫單詞,然后使用大寫字母來分隔單詞,例如getValueOfArea()

$this-x=$v;

}

function getX() {

return $this-x;

}

}

當(dāng)然你可以按自己的喜好進(jìn)行定義,但最好保持一種標(biāo)準(zhǔn),這樣會更有效。數(shù)據(jù)成員在類中使用"var"聲明來定義,在給數(shù)據(jù)成員賦值之前,它們是沒有類型的。一個數(shù)據(jù)成員可以是一個整數(shù),一個數(shù)組,一個相關(guān)數(shù)組(associative array)或者是一個對象。方法在類中被定義成函數(shù)形式,在方法中訪問類成員變量時,你應(yīng)該使用$this-name,否則對一個方法來說,它只能是局部變量。

使用new操作符來創(chuàng)建一個對象:

$obj=new Something;

然后你可以使用成員函數(shù)通過:

$obj-setX(5);

$see=$obj-getX();

在這個例子中,setX成員函數(shù)將5賦值給對象的成員變量x(不是類的),然后getX返回它的值5??梢韵螅?obj-x=6那樣通過類引用方式來存取數(shù)據(jù)成員,這不是一個很好的OOP習(xí)慣。我強(qiáng)烈建議通過方法來存取成員變量。如果你把成員變量看成是不可處理的,并且只通過對象句柄來使用方法,你將是一個好的OOP程序員。不幸的是,PHP不支持聲明私有成員變量,所以不良代碼在PHP中也是允許的。繼承在PHP中很容易實(shí)現(xiàn),只要使用extend關(guān)鍵字。

?php

class Another extends Something {

var $y;

function setY($v) {

$this-y=$v;

}

function getY() {

return $this-y;

}

}

"Another"類的對象現(xiàn)在擁有了父類(Something)的全部的數(shù)據(jù)成員及方法,而且還加上了自己的數(shù)據(jù)成員和方法。

你可以使用

$obj2=new Something;

$obj2-setX(6);

$obj2-setY(7);

PHP現(xiàn)在還不支持多重繼承,所以你不能從兩個或兩個以上類派生出新的類來。你可以在派生類中重定義一個方法,如果我們在"Another"類中重定義了getX方法,我們就不能使 用"Something"中的getX方法了。如果你在派生類中聲明了一個與基派同名的數(shù)據(jù)成員,那么當(dāng)你處理它時, 它將“隱藏”基類的數(shù)據(jù)成員。

你可以在你的類中定義構(gòu)造函數(shù)。構(gòu)造函數(shù)是一個與類名同名的方法,當(dāng)你創(chuàng)建一個類的對象時會被調(diào)用,例如:

?php

class Something {

var $x;

function Something($y) {

$this-x=$y;

}

function setX($v) {

$this-x=$v;

}

function getX() {

return $this-x;

}

}

所以你可以創(chuàng)建一個對象,通過:

$obj=new Something(6);

構(gòu)造函數(shù)會自動地把6賦值給數(shù)據(jù)變量x。構(gòu)造函數(shù)和方法都是普通的PHP函數(shù),所以你可以使用缺省參數(shù)。

function Something($x="3",$y="5")

接著:

$obj=new Something(); // x=3 and y=5

$obj=new Something(8); // x=8 and y=5

$obj=new Something(8,9); // x=8 and y=9

缺省參數(shù)使用C++的方式,所以你不能忽略Y的值,而給X一個缺省參數(shù),參數(shù)是從左到右賦值的,如果傳入的參數(shù)少于要求的參數(shù)時,其作的將使用缺省參數(shù)。

當(dāng)一個派生類的對象被創(chuàng)建時,只有它的構(gòu)造函數(shù)被調(diào)用,父類的構(gòu)造函數(shù)沒被調(diào)用,如果你想調(diào)用基類的構(gòu)造函數(shù),你必須要在派生類的構(gòu)造函數(shù)中顯示調(diào)用??梢赃@樣做是因?yàn)樵谂缮愔兴懈割惖姆椒ǘ际强捎玫摹?/p>

?php

function Another() {

$this-y=5;

$this-Something();

//顯示調(diào)用基類構(gòu)造函數(shù)

}

OOP的一個很好的機(jī)制是使用抽象類。抽象類是不能實(shí)例化,只能提供給派生類一個接口。設(shè)計(jì)者通常使用抽象類來強(qiáng)迫程序員從基類派生,這樣可以確保新的類包含一些期待的功能。在PHP中沒有標(biāo)準(zhǔn)的方法,但是:如果你需要這個特性,可以通過定義基類,并在它的構(gòu)造函數(shù)后加上"die" 的調(diào)用,這樣就可以保證基類是不可實(shí)例化的,現(xiàn)在在每一個方法(接口)后面加上"die" 語句,所以,如果一個程序員在派生類中沒有覆蓋方法,將引發(fā)一個錯誤。而且因?yàn)镻HP 是無類型的,你可能需要確認(rèn)一個對象是來自于你的基類的派生類,那么在基類中增加一個方法來實(shí)義類的身份(返回某種標(biāo)識id),并且在你接收到一個對象參數(shù)時校驗(yàn)這個值。當(dāng)然,如果一個邪惡不好的程序員在派生類中覆蓋了這個方法,這種方法就不起作用了,不過一般問題多發(fā)現(xiàn)在懶惰的程序員身上,而不是邪惡的程序員。

當(dāng)然,能夠讓基類對程序員無法看到是很好的,只要將接口打印出來做他們的工作就可以了。在PHP中沒有析構(gòu)函數(shù)。

重載(與覆蓋不同)在PHP中不支持。在OOP中,你可以重載一個方法來實(shí)現(xiàn)兩個或重多的方法具有相同的名字,但是有不同數(shù)量或類型的參數(shù)(這要看語言)。PHP 是一種松散類型的語言,所以通過類型重載不起作用,然而通過參數(shù)的個數(shù)不同來重載也不起作用。

有時在OOP中重載構(gòu)造函數(shù)非常好,這樣你可以通過不同的方法創(chuàng)建對象(傳遞不同數(shù)量的參數(shù))。在PHP中實(shí)現(xiàn)它的技巧是:

?php

class Myclass {

function Myclass() {

$name="Myclass".func_num_args();

$this-$name();

//注意$this-name()一般是錯誤的,但是在這里$name是一個將被調(diào)用方法的名字

}

function Myclass1($x) {

code;

}

function Myclass2($x,$y) {

code;

}

}

通過在類中的額外的處理,使用這個類對用戶是透明的:

$obj1=new Myclass('1'); //將調(diào)用Myclass1

$obj2=new Myclass('1','2'); //將調(diào)用Myclass2

有時這個非常好用。

多態(tài)

多態(tài)是對象的一種能力,它可以在運(yùn)行時刻根據(jù)傳遞的對象參數(shù),決定調(diào)用哪一個對象的方法。例如,如果你有一個figure的類,它定義了一個draw的方法。并且派生了circle和rectangle 類,在派生類中你覆蓋了draw方法,你可能還有一個函數(shù),它希望使用一個參數(shù)x,并且可以調(diào)用$x-draw() 。如果你有多態(tài)性,調(diào)用哪個draw方法就依賴于你傳遞給這個函數(shù)的對象類型。

多態(tài)性在象PHP這樣的解釋語言(想象一下一個C++編譯器生成這樣的代碼,你應(yīng)該調(diào)用哪一個方法?你也不知道你擁有的對象是什么類型的,好,這不是重點(diǎn))是非常容易和自然的。所以PHP當(dāng)然支持多態(tài)性。

?php

function niceDrawing($x) {

//假設(shè)這是Board類的一個方法

$x-draw();

}

$obj=new Circle(3,187);

$obj2=new Rectangle(4,5);

$board-niceDrawing($obj);

//將調(diào)用Circle的draw方法

$board-niceDrawing($obj2);

//將調(diào)用Rectangle的draw方法

用PHP進(jìn)行面向?qū)ο缶幊?/p>

一些"純化論者(purists)"可能會說PHP不是一個真正的面向?qū)ο蟮恼Z言,這是事實(shí)。PHP 是一個混合型語言,你可以使用OOP,也可以使用傳統(tǒng)的過程化編程。然而,對于大型項(xiàng)目,你可能想/需要在PHP 中使用純的OOP去聲明類,而且在你的項(xiàng)目只用對象和類。

隨著項(xiàng)目越來越大,使用OOP可能會有幫助,OOP代碼很容易維護(hù),容易理解和重用。這些就是軟件工程的基礎(chǔ)。在基于web的項(xiàng)目中應(yīng)用這些概念就成為將來網(wǎng)站成功的關(guān)鍵。

以上內(nèi)容來自 百度百科

PHP是什么?

PHP(中文名:“超文本預(yù)處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。

PHP獨(dú)特的語法混合了C、Java、Perl以及PHP自創(chuàng)的語法。它可以比CGI或者Perl更快速地執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多。

PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。

PHP在數(shù)據(jù)庫方面的豐富支持,也是它迅速走紅的原因之一,它支持下列的數(shù)據(jù)庫或是數(shù)據(jù)文件:

Adabas 、D、 DBA、dBase 、dbm 、filePro 、Informix 、InterBase、mSQL 、Microsoft SQL Server、·MySQL、Solid、Sybase、 Oracle 、PostgreSQL

而在Internet上它也支持了相當(dāng)多的通訊協(xié)議 (protocol),包括了與電子郵件相關(guān)的 IMAP,POP3;網(wǎng)管系統(tǒng) SNMP;網(wǎng)絡(luò)新聞NNTP;帳號共用 NIS;全球信息網(wǎng)HTTP及Apache服務(wù)器;目錄協(xié)議LDAP以及其它網(wǎng)絡(luò)的相關(guān)函數(shù)。

擴(kuò)展資料:

PHP的特性包括:

1、PHP獨(dú)特的語法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語法。

2、PHP可以比CGI或者Perl更快速的執(zhí)行動態(tài)網(wǎng)頁——動態(tài)頁面方面,與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成htmL標(biāo)記的CGI要高許多;PHP具有非常強(qiáng)大的功能,所有的CGI的功能PHP都能實(shí)現(xiàn)。

3、PHP支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。

4、PHP可以用C、C++進(jìn)行程序的擴(kuò)展。

參考資料:

百度百科--PHP

什麼是PHP? 什麼是SQL?

PHP 是一種服務(wù)器端的,嵌入HTML的腳本語言。PHP區(qū)別其他像客戶端Javascript的地方是它的代碼在服務(wù)器端執(zhí)行.PHP能做什么?

最低水平,PHP可以做任何其他CGI程序所能做的事,例如收集表格數(shù)據(jù),生成動態(tài)頁面內(nèi)容,或者收發(fā)cookies.可能最強(qiáng)大,最有意義的特性是PHP支持大范圍的數(shù)據(jù)庫.書寫一個支持?jǐn)?shù)據(jù)庫的Web 頁面是難以置信的簡單.

下面是當(dāng)前支持的數(shù)據(jù)庫:

Adabas D InterBase Solid

dBase mSQL Sybase

Empress MySQL Velocis

FilePro Oracle Unix dbm

Informix PostgreSQL

PHP通過協(xié)議也支持與其他服務(wù)的"交談",像IMAP, SNMP, NNTP, POP3, 甚至是 HTTP. 你也可以打開晦澀的 網(wǎng)絡(luò)接口和其他協(xié)議交互.

PHP的簡要?dú)v史

1994年秋季, Rasmus Lerdorf 開始構(gòu)思 PHP. 早期的非發(fā)行版本被用在他的主頁上,以追蹤誰在看他的在線簡歷. 1995年年初第一版本出臺,當(dāng)時PHP只被認(rèn)為是個人主頁開發(fā)工具.它由一個非常單純的只能理解很少數(shù)特殊宏的分析引擎和 一些用在主頁后端通用的工具組成.如留言簿,計(jì)數(shù)器和其他一些東西.這個分析器在1995年年中被重寫并被命名為 PHP/FI 第二版. FI來自 Rasmus 寫的另外一個包, 用于解釋 html 形式的數(shù)據(jù).他結(jié)合了個人主頁工具腳本和形式解析器,并加 上mSQL支持.這樣就產(chǎn)生 PHP/FI 了. PHP/FI以令人驚奇的步調(diào)成長,人們開始把自己的代碼貢獻(xiàn)給它.

很難給出它的硬統(tǒng)計(jì)表,但可以估計(jì)在1996年末,整個世界至少有15,000個網(wǎng)站在用PHP/FI.到1997年年中,這個 數(shù)字已經(jīng)超過50,000了. 而在此時PHP的發(fā)展也發(fā)生了變化.由Rasmus自己偏愛的和幾個人開發(fā)的項(xiàng)目變成一個更有組織的團(tuán) 體成就.Zeev Suraski和Andi Gutmans重寫了解析器.這個新的解析器成為PHP版本3的基礎(chǔ).許多有用的代碼從PHP/FI 繼承到PHP3,并且很多是完全重寫的.

今天(1999年年中)不管是PHP/FI或PHP3與很多商業(yè)產(chǎn)品捆綁在一塊,例如C2級強(qiáng)度的Web服務(wù)器和紅帽子Linux. 根據(jù)NetCraft提供的數(shù)據(jù)推斷,保守估計(jì)全世界應(yīng)用PHP的網(wǎng)站已超過150,000個.由此看來,它比在因特網(wǎng)上運(yùn)行Netscape 的旗艦企業(yè)服務(wù)器的站點(diǎn)還多.

PHP 是一種用來制作動態(tài)網(wǎng)頁的服務(wù)器端腳本語言。你通過PHP和HTML創(chuàng)建頁面。當(dāng)訪問者打開網(wǎng)頁時,服務(wù)器端便會處理 PHP 指令,然后把其處理結(jié)果送到訪問者的瀏覽器上面,就好像 ASP 或者是 ColdFusion 一樣。然而,PHP 跟 ASP 或 ColdFusion 不一樣的地方在于,它是跨平臺的開放源代碼。PHP 可以在 Windows NT 以及很多不同的 Unix 版本中執(zhí)行,它也可以被編譯為一個 Apache 模塊,或者是一個CGI二進(jìn)制文件。當(dāng)被編譯為 Apache ??鞎r,PHP 尤其輕巧方便。它沒有任何繁瑣程序所產(chǎn)生的負(fù)擔(dān),因此可以很快的返回結(jié)果,同時也不需為了保持較小的服務(wù)器內(nèi)存映象,而去調(diào)整mod_perl。

1. 引言

SQL是什麼?

* SQL (Structured Query Language)代表結(jié)構(gòu)化查詢語言。

* 當(dāng)用戶發(fā)出一項(xiàng)查詢,便可從數(shù)據(jù)庫檔內(nèi)獲得若干資料。這項(xiàng)查詢是根據(jù)用戶所提供的條件 (condition) 所作出的一項(xiàng)檢索。而 SQL則是一個可讓用戶把條件列明的查詢語言。這樣,用戶只須列明查詢的條件,而不須要實(shí)際知道有關(guān)的檢索方法。

* 一般的數(shù)據(jù)庫管理軟件系統(tǒng) (DBMS) 都包含 SQL 功能。

SQL的概念

* 通過 SQL 指令,用戶先列出數(shù)據(jù)庫檔及查詢的條件, SQL 程序便會在這數(shù)據(jù)庫檔內(nèi)檢查每筆記錄是否符合這項(xiàng)條件,并把有關(guān)的資料顯示出來。這個過程稱為檢索。 (見例 2)

* 用戶除了直接查問各筆記錄的資料外,也可查問統(tǒng)計(jì)數(shù)項(xiàng),例如最大值、最小值、總和及平均值。

* 查詢所得的結(jié)果會以表格的形式顯示,用戶亦可指示 SQL 程序把結(jié)果貯存成為數(shù)據(jù)庫檔。

在 FoxPro 如何使用 SQL

* 使用 SQL,必須先把有關(guān)數(shù)據(jù)庫檔開啟。

* 用戶可使用指令視窗 (Command Window) 直接把指令輸入,亦可使用對話方塊把指令輸入。

* 若用戶選用字符串的完全配對時,便須輸入 SET ANSI ON。

2. SQL檢索指令的基本結(jié)構(gòu)

一般語法 SELECT, ALL / DISTINCT, *,

AS, FROM, WHERE

比較 IN, BETWEEN, LIKE "% _"

群組 GROUP BY, HAVING,

COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )

顯示次序 ORDER BY, ASC / DESC

邏輯運(yùn)算符 AND, OR, NOT

輸出 INTO TABLE / CURSOR

TO FILE [ADDITIVE], TO PRINTER, TO SCREEN

聯(lián)合 UNION

簡稱:

expr = 表達(dá)式 expression, groupexpr = 群組表達(dá)式 group expression

col = 欄 column, comcol = 共同欄 common column

colname = 欄名 column name

nullval = 空值 null value

實(shí)例:學(xué)生個人資料

例子: 考慮以下貯存學(xué)生數(shù)據(jù)的數(shù)據(jù)庫檔 STUDENT. DBF:

(i) hcode 表示學(xué)生的社名(即紅黃藍(lán)綠四社)。

R = Red, Y = Yellow, B = Blue, G = Green

(ii) dcode 表示學(xué)生的居住地區(qū)碼。

eg. TST = 尖沙咀(Tsim Sha Tsui), MKK = 旺角(Mong Kok)

(iii) remission 表示學(xué)生是否享有學(xué)費(fèi)減免:

.T. =享有學(xué)費(fèi)減免, .F. = 沒有學(xué)費(fèi)減免

(iv) mtest 貯存學(xué)生數(shù)學(xué)測驗(yàn)的分?jǐn)?shù),滿分為100。

欄名 類型 欄寬 內(nèi)容

id 數(shù)字 4 學(xué)生編號

name 字符 10 學(xué)生名字

dob 日期 8 出生日期

sex 字符 1 性別: M / F

class 字符 2 班別

hcode 字符 1 社名: R, Y, B, G

dcode 字符 3 地區(qū)碼

remission 邏輯 1 學(xué)費(fèi)減免

mtest 數(shù)字 2 數(shù)學(xué)測驗(yàn)分?jǐn)?shù)

I 一般語法

SELECT ...... FROM ...... WHERE ......

SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;

FROM tablename WHERE condition

– SQL 程序會從數(shù)據(jù)庫檔 tablename 選取符合條件的橫列 (row) 并以表格的格式顯示。

– 表達(dá)式 expr1, expr2 可以是 (1) 字段,或 (2) 以函數(shù)和字段組成的表達(dá)式。

– 而 col1, col2 是表達(dá)式 expr1, expr2 在輸出結(jié)果的表格內(nèi)的欄名。

– 選項(xiàng) DISTINCT 會把重覆出現(xiàn)的橫列刪去(即只顯示一次),而選項(xiàng) ALL 則會把所有重覆的保留。

– 條件 condition 可以是 (1) 等式或不等式,或 (2) 字符串的比較,并使用邏輯運(yùn)算符 AND, OR, NOT。

在使用SQL之前,開啟數(shù)據(jù)庫檔:

USE student

例 1 求出所有學(xué)生的資料。

SELECT * FROM student

注意: 1) 這個指令并不提出任何條件,所以把 WHERE 部分省去。

2) 在 SELECT 部分中使用 * 來表示揀選來源表格的所有欄。

3) 查詢所得的結(jié)果將貯存於一個暫時的表格內(nèi)。

id

name dob sex class mtest hcode dcode remission

9801 Peter 06/04/86 M 1A 70 R SSP .F.

9802 Mary 01/10/86 F 1A 92 Y HHM .F.

9803 Johnny 03/16/86 M 1A 91 G SSP .T.

9804 Wendy 07/09/86 F 1B 84 B YMT .F.

9805 Tobe 10/17/86 M 1B 88 R YMT .F.

: : : : : : : : :

例 2 求出 1A 班學(xué)生的名字和社名。

SELECT name, hcode, class FROM student ;

WHERE class="1A"

注意: 這例使用條件 class="1A" 揀選 1A 班學(xué)生:SQL 程序會從來源表格中的每一橫列逐一地檢查是否符合這條件。然后 SQL 程序會根據(jù) SELECT 的選項(xiàng)而保留這些橫列內(nèi)的三欄,即 name, hcode 及 class。最后程序會把所得的結(jié)果貯存於一個暫時的表格內(nèi)。

name

hcode class

Peter R 1A

Mary Y 1A

Johnny G 1A

Luke G 1A

Bobby B 1A

Aaron R 1A

: : :

例 3 求出紅社社員的居住地區(qū)。(hcode="R")

SELECT DISTINCT dcode FROM student ;

WHERE hcode="R"

注意: 若兩個或以上的學(xué)生居住於同一地區(qū),使用選項(xiàng) DISTINCT 便可把重覆的結(jié)果省去。

dcode

HHM

KWC

MKK

SSP

TST

YMT

例 4 求出 1B 班女生的名字和年齡。(準(zhǔn)至一位小數(shù))

SELECT name, ROUND((DATE( )-dob)/365,1) AS age FROM student ;

WHERE class="1B" AND sex="F"

注意: 1) 「1B 班女生」的條件包括兩部分:class="1B" 和 sex="F"。而這項(xiàng)條件必須同時符合,所以要使用邏輯運(yùn)算符 AND。

2) 在這數(shù)據(jù)庫檔裏并沒有一欄直接貯存年齡,所以我們須要使用學(xué)生的出生日期 dob 來計(jì)算。首先,DATE( )-dob 表示該生的"日歲",再除 365 就變成"年歲"。再用選項(xiàng) AS age 去說明該欄的名稱。

name

age

Wendy 12.1

Kitty 11.5

Janet 12.4

Sandy 12.3

Mimi 12.2

例 5 求出 1A 班沒有學(xué)費(fèi)減免的學(xué)生的名字和編號。

SELECT name, id, class FROM student ;

WHERE class="1A" AND NOT remission

注意: 1) 這裏包括兩項(xiàng)條件:學(xué)生必須是 1A 班,而且沒有享有學(xué)費(fèi)減免。 所以在 WHERE 部分中加上運(yùn)算符 AND。

2) 因 remission 是一個邏輯字段,所以可直接在邏輯表達(dá)式中使用 。在 remission 之前加上 NOT 便把意思相反。

name

id class

Peter 9801 1A

Mary 9802 1A

Luke 9810 1A

Bobby 9811 1A

Aaron 9812 1A

Ron 9813 1A

Gigi 9824 1A

: : :

II 比較

expr IN ( value1, value2, value3)

expr BETWEEN value1 AND value2

expr LIKE "%_"

– 在 WHERE 部分中,可使用以上的比較條款:

1) 若 expr 的值是相等於 value1, value2, value3 其中的一個時,條款 expr IN ( value1, value2, value3) 便會送回邏輯值 .T.。而 expr 可以是數(shù)值或字符串。

2) 若expr 是界乎於 value1 和 value2 之間,條款

expr BETWEEN value1 AND value2 便會送回邏輯值 .T.。

3) 若字符串 expr 符合 "%_" 的樣式,條款 expr LIKE "%_" 便會送回邏輯值 .T.。在樣式中, "%" 代表任何長度的字符串,而 "_" 則代表任何的單一字符。

例 6 求出所有出生於星期三或星期六的學(xué)生。

SELECT name, class, CDOW(dob) AS bdate FROM student ;

WHERE DOW(dob) IN (4,7)

注意: 學(xué)生若在星期三星期六出生, DOW(dob) 使會送回 數(shù)值 4 或 7,所以用 IN (4,7) 來檢查。

name

class bdate

Peter 1A Wednesday

Wendy 1B Wednesday

Kevin 1C Saturday

Luke 1A Wednesday

Aaron 1A Saturday

: : :

例 7 求出所有不是在一月、三月、六月或九月出生的學(xué)生。

SELECT name, class, dob FROM student ;

WHERE MONTH(dob) NOT IN (1,3,6,9)

注意: 我們不想 MONTH(dob) = 1, 3, 6 或 9, 所以使用 NOT IN (1,3,6,9) 來檢查。

name

class dob

Wendy 1B 07/09/86

Tobe 1B 10/17/86

Eric 1C 05/05/87

Patty 1C 08/13/87

Kevin 1C 11/21/87

Bobby 1A 02/16/86

Aaron 1A 08/02/86

: : :

例 8 求出1A 班的學(xué)生名字,其數(shù)學(xué)測驗(yàn)分?jǐn)?shù)界乎於 80 至 90 分之間。

SELECT name, mtest FROM student ;

WHERE class="1A" AND mtest BETWEEN 80 AND 90

注意: 1) 這裏用了兩個條件:第一個是 class="1A",第二個是測驗(yàn)分?jǐn)?shù)界乎於 80 至 90 分之間。這兩個條件必須同時成立,所以須用 AND。

2) 測驗(yàn)分?jǐn)?shù)界乎於 80 至 90 分之間可用 mtest BETWEEN 80 AND 90 來表示。

name

mtest

Luke 86

Aaron 83

Gigi 84

例 9 求出所有學(xué)生其名字是以 "T" 為起首。

SELECT name, class FROM student ;

WHERE name LIKE "T%"

注意: 這裏所用的樣式是 "T%" ,這表示第一個字符必須是 "T" 而其后可以是任何的字符串。

name

class

Tobe 1B

Teddy 1B

Tim 2A

例10 求出所有紅社社員其名字的第二個字母是"a"。

SELECT name, class, hcode FROM student ;

WHERE name LIKE "_a%" AND hcode="R"

注意: 這裏所用的樣式是 "_a%" ,而其中的 "_" 符號代表任何單一字符,亦即第一個字符是任意的。第二個字符則必須是 "a",而其后的 "%" 代表任何的字符串。

name

class hcode

Aaron 1A R

Janet 1B R

Paula 2A R

III 群組

SELECT ...... FROM ...... WHERE condition ;

GROUP BY groupexpr [HAVING requirement]

群組函數(shù): COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )

–GROUP BY groupexpr 列出群組組成所依照的表達(dá)式。一般都是數(shù)據(jù)庫檔的一欄。

– WHERE condition 列出個別橫列所須符合的條件,而 HAVING requirement 則列出個別群組須符合的條件。

– 可使用以群組函數(shù)來計(jì)算統(tǒng)計(jì)數(shù)項(xiàng):

COUNT( ): 記錄出現(xiàn)的目數(shù)

SUM( ): 總和

AVG( ): 平均值

MAX( ): 最大值

MIN( ): 最小值

例11 求出每一班的人數(shù)。

SELECT class, COUNT(*) FROM student

GROUP BY class

注意: 1) 使用 GROUP BY class, SQL 程序便會先把表格裏的橫列按照 class 排列起來。

2) 然后 SQL 程序會把相連的橫列依照 class 來群組。

3) 最后使用群組函數(shù) COUNT(*) 去算數(shù)每組的數(shù)目。

class

cnt

1A 10

1B 9

1C 9

2A 8

2B 8

2C 6

例12 求出每一班的數(shù)學(xué)測驗(yàn)平均分。

SELECT class, AVG(mtest) FROM student GROUP BY class

注意: SQL 程序會先依照 class 來群組,然后在每一組中計(jì)算該組的 mtest 平均值。

class

avg_mtest

1A 85.90

1B 70.33

1C 37.89

2A 89.38

2B 53.13

2C 32.67

例13 求出每一居住地區(qū)的女生數(shù)目。

SELECT dcode, COUNT(*) FROM student ;

WHERE sex="F" GROUP BY dcode

注意: 查詢的條件為 sex="F"。而 SQL 程序會先把符合這條件的橫列選出,然后把這些橫列依照 dcode 為群組。

dcode

cnt

HHM 6

KWC 1

MKK 1

SSP 5

TST 4

YMT 8

例14 求出每一區(qū)中一學(xué)生數(shù)學(xué)測驗(yàn)的最高分及最低分。

SELECT MAX(mtest), MIN(mtest), dcode FROM student ;

WHERE class LIKE "1_" GROUP BY dcode

max_mtest

min_mtest dcode

92 36 HHM

91 19 MKK

91 31 SSP

92 36 TST

75 75 TSW

88 38 YMT

注意: 這例使用條件 class LIKE "1_" 來揀選每區(qū)的中一學(xué)生。

例15 列出每一班男生數(shù)學(xué)測驗(yàn)的平均分,但男生人數(shù)不及三人的班則不計(jì)算在內(nèi)。

SELECT AVG(mtest), class FROM student ;

WHERE sex="M" GROUP BY class HAVING COUNT(*) = 3

注意: SQL 程序會先把符合個別條件 sex="M" 的橫列揀選出來,然后依照 class 來群組并計(jì)算每組的 mtest 平均值。最后 SQL 程序會檢查群組條件 COUNT(*) = 3。(這例中 2C 班男生人數(shù)不及三人,所以并沒有在結(jié)果裏顯示出來。)

avg_mtest

class

86.00 1A

77.75 1B

35.60 1C

86.50 2A

56.50 2B

IV 顯示次序

SELECT ...... FROM ...... WHERE ...... GROUP BY ..... ;

ORDER BY colname ASC / DESC

– ORDER BY colname 控制結(jié)果的顯示序。而 colname 代表結(jié)果表格的一欄。而ASC = 升冪, DESC = 降冪。

例16 列出 1A 班男生的名字,并按名字序顯示。

SELECT name, id FROM student ;

WHERE sex="M" AND class="1A" ORDER BY name

name id name id

Peter

9801 Aaron 9812

Johnny 9803 Bobby 9811

Luke 9810 Johnny 9803

Bobby 9811 Luke 9810

Aaron 9812 Peter 9801

Ron 9813 Ron 9813

例17 列出 2A 班的學(xué)生資料,并按居住地區(qū)序顯示。

SELECT name, id, class, dcode FROM student ;

WHERE class="2A" ORDER BY dcode

name id class dcode

Jimmy 9712 2A HHM

Tim 9713 2A HHM

Samual 9714 2A SHT

Rosa 9703 2A SSP

Helen 9702 2A TST

Joseph 9715 2A TSW

Paula 9701 2A YMT

Susan 9704 2A YMT

例18 求出每區(qū)居住學(xué)生的人數(shù),并按降冪顯示。

SELECT COUNT(*) AS cnt, dcode FROM student ;

GROUP BY dcode ORDER BY cnt DESC

cnt

docode

11 YMT

10 HHM

10 SSP

9 MKK

5 TST

2 TSW

1 KWC

1 MMK

1 SHT

例19 列出每社的男社員名字并按班別序顯示。(即社和班的兩層次序)

SELECT name, hcode, class FROM student ;

WHERE sex="M" ORDER BY hcode, class

注意: 這些橫列先按 hcode 排列(即第一層排列);而相同的 hcode,再按 class 次序顯示。

name hcode class

Bobby

B 1A

Teddy B 1B

Joseph B 2A

Zion B 2B

Leslie B 2C

Johnny G 1A

Luke G 1A

Kevin G 1C

George G 1C

: : :

: : :

V 輸出

INTO TABLE tablename

把查詢所得的結(jié)果貯存成數(shù)據(jù)庫檔。

INTO CURSOR temp

把查詢所得的結(jié)果暫時貯存於電腦的工作記憶裏。

TO FILE filename [ADDITIVE]

把查詢所得的結(jié)果貯存成文字檔。(additive = 附加)

TO PRINTER 輸出到列印機(jī)。

TO SCREEN 輸出到螢?zāi)弧?/p>

例20 按學(xué)生名字的降冪,列出學(xué)生的所有資料,并把結(jié)果貯存成數(shù)據(jù)庫檔NAME.DBF。

SELECT * FROM student ;

ORDER BY name DESC INTO TABLE name.dbf

注意: 1) INTO TABLE name.dbf 要求 SQL 程序把結(jié)果貯存成檔案。

2) 這指令相等於數(shù)據(jù)庫指令 SORT。

3) SQL 程序會把結(jié)果貯存成一個新的數(shù)據(jù)庫檔 name.dbf。

id

name dob sex class mtest hcode dcode remission

9707 Zion 07/29/85 M 2B 51 B MKK .F.

9709 Yvonne 08/24/85 F 2C 10 R TST .F.

9804 Wendy 07/09/86 F 1B 84 B YMT .F.

9819 Vincent 03/15/85 M 1C 29 Y MKK .F.

9805 Tobe 10/17/86 M 1B 88 R YMT .F.

9713 Tim 06/19/85 M 2A 91 R HHM .T.

9816 Teddy 01/30/86 M 1B 64 B SSP .F.

:

: : : : : : : :

例21 按社員的班別、性別及名字的次序,把紅社社員的資料列印出來。

SELECT class, name, sex FROM student ;

WHERE hcode="R" ;

ORDER BY class, sex DESC, name TO PRINTER

注意: 1) 這指令要求程序先找出綠社社員,然后把這些橫列以 class, sex 和 name 的次序排列。

2) SQL 程序先把查詢的結(jié)果暫時貯存於工作記憶裏,然后把這結(jié)果輸出到打印機(jī)。

class

name sex

1A

Aaron M

1A

Peter M

1A Ron M

1B Tobe M

1B Janet F

1B Kitty F

1B

Mimi F

: : :

3. 數(shù)據(jù)庫聯(lián)合、相交及差分

考慮兩個結(jié)構(gòu)相同的數(shù)據(jù)庫檔 A 和 B。

A 和 B 的聯(lián)合

(A B) union

檢取屬於 A 或 B 的所有橫列。

A 和 B 的相交

(A B) intersection

檢取 A 和 B 所共有的橫列。

A 和 B 的差分

(A–B) difference 檢取只屬於 A 而不屬於 B 的橫列。(即從 A 把 B 的部分排出)

SELECT ...... FROM ...... WHERE ...... ;

UNION ;

SELECT ...... FROM ...... WHERE ......

SELECT ...... FROM table1 ;

WHERE col IN ( SELECT col FROM table2 )

SELECT ...... FROM table1 ;

WHERE col NOT IN ( SELECT col FROM table2 )

實(shí)例:橋牌會和棋藝會

考慮學(xué)校橋牌會和棋藝會的會員,他們的資料分別貯存於同一結(jié)構(gòu)的數(shù)據(jù)庫檔 BRIDGE.DBF 和 CHESS.DBF 內(nèi):

欄名 類型 欄寬 內(nèi)容

id 數(shù)字 4 學(xué)生編號

name 字符 10 學(xué)生名字

sex 字符 1 性別: M / F

class 字符 2 班別

Bridge [A] Chess [B]

id name sex class id name sex class

1 9812 Aaron M 1A 1 9802 Mary F 1A

2 9801 Peter M 1A 2 9801 Peter M 1A

3 9814 Kenny M 1B 3 9815 Eddy M 1B

4 9806 Kitty F 1B 4 9814 Kenny M 1B

5 9818 Edmond M 1C 5 9817 George M 1C

: : : : : : : :

在使用SQL之前,開啟這兩個數(shù)據(jù)庫檔:

SELECT A

USE bridge

SELECT B

USE chess

例22 本校計(jì)劃舉行一次 "棋橋活動",所有棋藝會和橋牌會的會員必須出席。試以班別和名字的次序,列出兩會會員的名單。(即兩會的聯(lián)合)

SELECT * FROM bridge ;

UNION ;

SELECT * FROM chess ;

ORDER BY class, name INTO TABLE party

注意: 所要求的是兩會的所有會員,這便是兩會的聯(lián)合。

Party

id name sex class

1 9812 Aaron M 1A

2 9802 Mary F 1A

3 9801 Peter M 1A

4 9815 Eddy M 1B

5 9814 Kenny M 1B

6 9806 Kitty F 1B

7 9818 Edmond M 1C

8 9817 George M 1C

: : : :

例23 列印兩會的共同會員。(即兩會的相交)

SELECT * FROM bridge ;

WHERE id IN ( SELECT id FROM chess ) ;

TO PRINTER

注意: 這例須找出兩會所共通的會員。SQL 程序須檢查橋牌會的每一個會員是否也屬於棋藝會。若是屬於的話,這人便符合這個要求了。

Common

id name sex class

1 9801 Peter M 1A

2 9814 Kenny M 1B

: : : :

例24 求出只參加了橋牌會的會員名單。(即兩會之差分)

SELECT * FROM bridge ;

WHERE id NOT IN ( SELECT id FROM chess ) ;

INTO TABLE diff

注意: 1) 這例須從橋牌會中揀選那些并不屬於棋藝會的人。所以 SQL 程序須使用 FROM bridge,即從逐一檢查橋牌會的會員是否屬於棋藝會,若不屬於的話,這人便符合這個要求了。

2) "差分"不是對稱的:若想找出"只參加了棋藝會的會員名單",其結(jié)果則會完全不同。

Diff

Id name sex class

1 9812 Aaron M 1A

2 9806 Kitty F 1B

3 9818 Edmond M 1C

: : : :

4. 多個數(shù)據(jù)庫

當(dāng)所查詢的資料貯放於兩個數(shù)據(jù)庫檔時,就須使用接合 (join)。 接合的作用是把一個數(shù)據(jù)庫檔內(nèi)的一個橫列與另一個數(shù)據(jù)庫檔內(nèi)的橫列連合起來,從而把所有不同的組合列出來。 (數(shù)學(xué): Cartesian Product)

自然接合

* 在接合中加上一項(xiàng)接合條件,要求兩檔的共通欄(common column)的值是相同,這稱為自然接合。這目的是要把這兩檔的相關(guān)資料連合起來,變成一個合一的大表格,再從這表格中執(zhí)行查詢工作。

考慮以下兩個數(shù)據(jù)庫檔 T1 和 T2:

SELECT a.comcol, a.col1, b.col2, expr1, expr2 ;

FROM table1 a, table2 b ;

WHERE a.comcol = b.comcol

– 在自然接合中,這兩個數(shù)據(jù)庫檔須要有一個欄是相同的,這一欄稱為共通欄 。SQL 程序會先把這兩檔的所有組合列出,然后從中揀選共通欄的值是相同的橫列。

– a 和 b 分別是 table1 和 table2的代號,用以指明各欄所屬的檔。

– 表達(dá)式 expr1, expr2 可以使用 table1 和 table2內(nèi)的各欄。

實(shí)例:樂器班

學(xué)校規(guī)定每個學(xué)生都須要學(xué)習(xí)一件樂器。現(xiàn)在使用數(shù)據(jù)庫檔 MUSIC.DBF 貯存學(xué)生所學(xué)的樂器名稱 (而學(xué)生的其他資料則貯存於 STUDENT.DBF 內(nèi))

欄名 類型 欄寬 內(nèi)容

id 數(shù)字 4 學(xué)生編號

type 字符 10 樂器名稱

例25 列出所有學(xué)生的名字及所學(xué)習(xí)的樂器名稱。

SELECT s.class, s.name, s.id, m.type FROM student s, music m ;

WHERE s.id=m.id ORDER BY class, name

注意: 1) 這裏用了s 代表 student.dbf 而 m 代表 music.dbf。

2) 接合條件是 s.id=m.id,表示兩檔的橫列須要依照 id 而接合。

class

name id type

1A Aaron 9812 Piano

1A Bobby 9811 Flute

1A Gigi 9824 Recorder

1A Jill 9820 Piano

1A Johnny 9803 Violin

1A Luke 9810 Piano

1A Mary 9802 Flute

: : : :

例26 求出每班學(xué)習(xí)鋼琴的學(xué)生數(shù)目。

SELECT s.class, COUNT(*) FROM student s, music m ;

WHERE s.id=m.id AND m.type="Piano" ;

GROUP BY class ORDER BY class

注意: 1) 裏先首先用了接合條件 s.id=m.id 把兩檔自然接合起來。

2) SQL 程序然后從接合的結(jié)果(表格形式)中再揀選去符合條件 m.type="Piano" 的橫列。

3) 最后 SQL 程序會依照 class 而群組,并數(shù)算每班的數(shù)目。

class cnt

1A 4

1B 2

1C 1

外接合

* 外接合是自然接合再加上沒有配合的部分。

SELECT a.common, a.column1, b.column2, expr1, expr2 ;

FROM table1 a, table2 b ;

WHERE a.comcol = b.comcol ;

UNION ;

SELECT comcol, col1, nullval, nullval, nullval ;

FROM table1 ;

WHERE a.comcol NOT IN ( SELECT comcol FROM table2 )

– 外接合的指令包括兩個 SELECT 部分,再以 UNION 聯(lián)會起來。

– 第一部分是自然接合(即成功接合),第二部分則是沒有配合(即是在第一部分不能自然接合的橫列)。

– 為了使第二部分與第一部分的結(jié)構(gòu)一樣,第二部分中沒有數(shù)值的位置須填上空值 (null value),即空字符串""、數(shù)值零、 邏輯值 .F. 或空日期 { / / } 。

例27 列出尚未選擇樂器的學(xué)生名字。(即沒有相配)

SELECT class, name, id FROM student ;

WHERE id NOT IN ( SELECT id FROM music ) ;

ORDER BY class, name

注意: 1) 這指令會從 student.dbf 中選出那些在另一檔 music.dbf 沒有配合的橫列。

2) ( SELECT id FROM music) 選出那些在數(shù)據(jù)庫檔 music.dbf 出現(xiàn)的 id,所以條件 id NOT IN (...) 能檢索出沒有配對的橫列。

class

name id

1A Mandy 9821

1B Kenny 9814

1B Tobe 9805

1C Edmond 9818

1C George 9817

: : :

例28 列出一份名單,去查核所有學(xué)生學(xué)習(xí)的樂器。名單須包括尚未參加樂器班的學(xué)生名字。(即外接合)

SELECT s.class, s.name, s.id, m.type ;

FROM stu

php是什么

PHP屬于編程語言的一種,是一種用于創(chuàng)建動態(tài)和交互式HTML網(wǎng)頁的腳本語言。

編程語言是一種被標(biāo)準(zhǔn)化的交流技巧,用來向計(jì)算機(jī)發(fā)出指令,定義計(jì)算機(jī)程序,讓程序員能夠準(zhǔn)確地定義計(jì)算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動的一種計(jì)算機(jī)語言。而編程語言包含很多細(xì)分,而PHP就是其中一種。

它的主要特性為:

①開源性和免費(fèi)性

由于PHP的解釋器的源代碼是公開的,所以安全系數(shù)較高的網(wǎng)站可以自己更改PHP的解釋程序。另外,PHP運(yùn)行環(huán)境的使用也是免費(fèi)的。

②快捷性

PHP是一種非常容易學(xué)習(xí)和使用的一門語言,它的語法特點(diǎn)類似于C語言,但又沒有C語言復(fù)雜的地址操作,而且又加入了面向?qū)ο蟮母拍?,再加上它具有簡潔的語法規(guī)則,使得它操作編輯非常簡單,實(shí)用性很強(qiáng)。

③數(shù)據(jù)庫連接的廣泛性

PHP可以與很多主流的數(shù)據(jù)庫建立起連接,如MySQL、ODBC、Oracle等,PHP是利用編譯的不同函數(shù)與這些數(shù)據(jù)庫建立起連接的,PHPLIB就是常用的為一般事務(wù)提供的基庫。

④面向過程和面向?qū)ο蟛⒂?/p>

在PHP語言的使用中,可以分別使用面向過程和面向?qū)ο螅铱梢詫HP面向過程和面向?qū)ο髢烧咭黄鸹煊?,這是其它很多編程語言是做不到的。

優(yōu)點(diǎn)

①流行,容易上手

PHP是目前最流行的編程語言,這毋庸置疑。它驅(qū)動全球超過2億多個網(wǎng)站,有全球超過81.7%的公共網(wǎng)站在服務(wù)器端采用PHP。PHP常用的數(shù)據(jù)結(jié)構(gòu)都內(nèi)置了,使用起來方便簡單,也一點(diǎn)都不復(fù)雜,表達(dá)能力相當(dāng)靈活。

②開發(fā)職位很多

在服務(wù)器端的網(wǎng)站編程中PHP會更容易幫助你找到工作。很多互聯(lián)網(wǎng)相關(guān)企業(yè)都在使用PHP開發(fā)框架,所以可以說市場對PHP的開發(fā)程序員的需求還是比較大的。

③仍然在不斷發(fā)展

PHP在不斷兼容著類似closures和命名空間等技術(shù),同時兼顧性能和當(dāng)下流行的框架。版本是7之后,一直在提供更高性能的應(yīng)用。

④可植入性強(qiáng)

PHP語言在補(bǔ)丁漏洞升級過程中,核心部分植入簡單易行,且速度快。

⑤拓展性強(qiáng)

PHP語言在數(shù)據(jù)庫應(yīng)用過程中,可以從數(shù)據(jù)庫調(diào)取各類數(shù)據(jù),執(zhí)行效率高

數(shù)據(jù)庫和php是什么關(guān)系?

PHP是邏輯語言,數(shù)據(jù)庫是存放信息的。PHP通過邏輯去數(shù)據(jù)庫調(diào)用客戶想看的數(shù)據(jù)。


網(wǎng)頁標(biāo)題:計(jì)算機(jī)數(shù)據(jù)庫是PHP嗎,計(jì)算機(jī)PHP
當(dāng)前路徑:http://weahome.cn/article/hedceg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部