伺服器端指令碼技術是一種非常有用的東西,將它和用戶端指令碼技術聯合起來應用可以 製作出功能極其強大的頁面。好象很久以前有一陣子哪個版(似乎是WWW版)上討論ASP 到了熱火朝天的地步,還有人提議開個ASP版,那就是一種伺服器端指令碼技術。 通常用的伺服器端指令碼技術是CGI,NSAPI/ISAPI/FastCGI等等都是對它的改善和擴充。 至於用什麼語言來實現CGI技術,沒有任何規定,大家一般使用Perl,因為它的字元 功能比較強大。到了需要速度的場合,就用C來實現。
用Perl/C等寫的CGI指令碼是一種“非嵌入式”的伺服器端指令碼,因為它是一個單獨的程式, 而不是嵌在HTML文檔中再通過另一個程式解釋替換。
例如,下面的Perl程式:
print "Content-type:text/html\n\n";
print <<HeadofHTML;
<HTML>
<HEAD>
<TITLE>Hello!</TITLE>
</HEAD>
<BODY>
HeadofHTML
print "<CENTER>aaa</CENTER>";
print "</BODY></HTML>";
它中間雖然也有一段似乎是HTML文檔,但那是HTML文檔嵌入了Perl程式,而不是反過來。 IDC/HTX,ASP等是嵌入式的伺服器端指令碼,下面的例子是一個mSQL Lite指令碼:
<HTML>
<HEAD>
<TITIE>
<!
echo "Hello!";
>
</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>
這個指令碼經過伺服器端的解釋程式後,<!...>被替換成其輸出。 PHP是一種跨平台的伺服器端指令碼技術。它最初是一個人為了寫他的首頁而用Perl寫 的"封裝"程式,後來因為用的人多了,就發展了起來,現在已經是3.0版,用C實現, 在Unix和Windows 95/NT下都可以跑起來。
PHP3.0有幾個平台下的編譯好的版本,也有源碼版本。 PHP3.0內部帶了對幾種常用資料庫的支援,包括:Sybase,Oracle,mSQL,mySQL,PostgresQL, ODBC,dBase等。如果編譯它的源碼時選擇對這些資料庫中某幾個的支援,那麼必須事先 有它們的客戶庫。
在Unix下編譯的方法是:先解壓,然後運行"./configure [選項]"(選項見README檔案), 再運行"make"和"make install". 選項中比較重要的有:"--enable-msql=msql庫路徑"等資料庫選項和"--enable-apache= apache來源程式路徑"等。 如果選擇了--enable-apache,那麼編譯出的將是一個庫檔案,make install將把這個庫 安裝到apache來源程式中,然後再編譯apache,可以得到支援php的apache伺服器。否則, 產生的將是一個解釋程式。
具體請看README檔案。 在Windows下,有一個安裝程式,介面不太好,而且有幾個檔案會報告找不到,跳過就是 了。裝上後要把php3目錄設成網路可執行檔。Readme中說要手工修改Registry,但似乎用 不著。 文檔不是太好,因為3.0的文檔還沒寫全,而2.0的文檔又有些過時了。
安裝上之後,系統應該支援對.php3和.phps檔案的HTTP讀取了。(在Unix下需要修改服務 器的srm.conf檔案,具體看README).
如果安裝時連進了apache伺服器,那麼速度應該是最快的。如果作為CGI程式執行,速度 也還將就。如果系統支援FastCGI,那麼解釋程式也可以作為FastCGI程式運行。Windows下 支援ISAPI的解釋程式還沒有出來。
現在我們來看看第一個php3指令碼,照例是Hello,world.
<HTML>
<HEAD>
<TITLE>First PHP3 Script</TITLE>
</HEAD>
<BODY>
<CENTER>
<?
echo "Hello, world!";
?>
</CENTER>
</BODY>
</HTML>
把它放在任何一個能通過HTTP訪問到的目錄,取名hello.php3,再用瀏覽器串連 該檔案,就可以看見其效果了(不用我寫了吧.)
如果把它改名成hello.phps,再用Netscape或Explorer串連,可以看見加了顏色 的源碼,因為解譯器在遇到.phps檔案時會對它進行文法加亮的處理,在裡面加上很多顏色 控制符再送出. 並不需要手工指定解譯器所在位置,因為如果在Apache伺服器下,srm.conf裡面可以 指定,在Microsoft IIS 或 PWS下,Registry裡面會指定.
從上面的例子應該很容易看出php3檔案的寫法.用<?和?>括起來的部分就是php3 程式段,解譯器對其餘部分不作處理,將這些程式段執行後以其輸出代替(echo語句輸出一 個無格式字串,printf語句類似於C的同名函數.) 同樣可以看出,php3程式雖然是文本,但用戶端只能看見解釋後的結果(除非你提供同名的phps檔案),因此對用戶端是保密的,這也是絕大部分伺服器端指令碼的特點.
PHP和一般的解釋性語言一樣,不需要事先定義變數.如果你試著使用一個 沒有賦過值的變數,那麼返回的值是Null 字元串.對一個變數賦值則也就同時分配了 這個變數的記憶體. PHP的變數名前面必須有一個$號,這也是很多指令碼語言的慣例了.
例如:
$a=1;
$b=1.0;
$c="Hello!";
都是合法的PHP語句.
PHP中的數組是這樣定義的:
$a[1]="a";
$a[2]="b";
它會自動擴充,不必預先設定上限.
其實數組下標也可以是一個字串,例如:
$a["a"]=1;
$a["b"]="Hello!";
這時它實際上是一個雜湊表,就象Tcl中的所謂數組一樣.
PHP中有一種類似於指標的用法,例如:
$a = "b";
$$a = "c";
則後一句產生了一個$b變數並給它賦值"c".
PHP變數之間的運算子和C的類似,例如也有:
+,-,*,/,%,^,&,|,&&,||,!,+=,-=,++,--等
PHP3.0定義了一個字串相加運算子".",和Perl的一樣.
PHP的變數類型可以自動轉換,如果需要強制轉換,做法和C的一樣.它有Integer,
Double,String三種簡單類型.
要遍曆一個雜湊表,可以這樣:
$i["a"] = 0;
$i["c"] = 1;
reset($i);
for ($j=1;$j<=count($i);$j++) {
$k = key($i);
echo "$k, $i[$k]";
echo "<BR>";
next($i);
}
PHP中的控制流程語句與C幾乎完全一樣,也有if...else,while,for,switch,break,
exit.
PHP3.0中的函數如下例:
function test($a, $b) {
return $a*2+$b;
}
和C差不多.
函數可以遞迴調用.
PHP3.0的變數範圍規定也類似於C,即預設認為主程式中的變數是全域 變數,而函數中的變數都是局部變數,即使有同名的全域變數也不使用. 如果在函數中要使用全域變數,則必須在函數頭上用global語句聲明,
例如:
function ...{
global $a, $b;
...
}
如果函數頭上用static語句聲明了一些變數,那麼這些變數是靜態,其 含義與C語言中的相同. PHP中提供include語句,類似於C的#include. include語句包含的可以是任意檔案,它的內容將出現在最後輸出的頁面 上.如果該檔案中有<?...?>括起的部分,則該部分將被PHP解譯器解釋執行,否則 該檔案的內容原封不動地送出. 它包含的檔案名稱可以是絕對或相對路徑,也可以是一個http或ftp的URL, 在後一種情況下,解譯器自動取來該URL內容.用這種方法甚至可以觸發一個別的 機器上的CGI程式. readfile語句類似於include,但它不執行檔案中的PHP程式,只把檔案原 封不動地送出.這時被包含的檔案中的<?...?>將被瀏覽器理解為注釋.
PHP3.0中的字串操作功能是比較多的,重要的有以下這些:
(1)echo,print,printf,sprintf
前兩個函數是輸出字串.字串中如果有變數名則被替換成其值. 後兩個函數類似於C的同名函數.
(2)strchr,strlen,strtok,strrchr,strrev,strstr,strtolower,
strtoupper,substr,ucfirst
這些是常用的字串操作函數,有些和C中的同名函數意義完全一致. strrev是把一個字串翻轉. strtolower和strtoupper的意思應該不用解釋了. ucfirst是把字串的第一個字元變成大寫. substr是返回字串的一個子串,用法是:substr(字串,頭,長度).頭位置是從0算起的.如果是負數,則是從尾部向前數的意思.
(3)Chr,Ord
類似於C的同名函數.
(4)explode,implode,join
這些是和數組有關的函數. explode(字串,分割符)返回一個將字串在分割符處分開所產生的數組. implode(數組,分割符)返回一個將數組各元素之間插上分割符而成的字串. join與implode意義相同.
(5)Chop
去掉字串尾部的空白.
(6)htmlspecialchars
將字串中的HTML特殊字元換成它們的名字,例如"<"變成"<".
(7)nl2br
在字串中的每一個斷行符號前面加上"<BR>".
(8)AddSlashes,StripSlashes
分別給字串中需要加上"\"才能用於資料庫查詢的字元加上和去掉"\".
(9)parse_str
將"name1=value1&name2=value2&..."類型的字串分析成一些變數.
例如:
parse_str("a=1&b=2");
產生$a與$b兩個變數,值分別為1,2. 如果有兩對名字/值的名字部分相同,則後一個的值覆蓋前一個的. 如果這兩對的名字尾部都有"[]",例如"a[]=1&a[]=2",則產生數組$a,兩個元素分別為1,2.
PHP與其它跨平台語言(也許Java不在其列. :))類似,也有正規運算式功能.PHP3.0的正規運算式功能當然遠遠比不上Perl,但還是足夠用的,主要函數有這麼些:
(1)ereg,eregi
這是正規運算式匹配函數,前者是大小寫有關匹配,後者則是無關的.
用法:
ereg(正規運算式,字串,[匹配部分數組名]);PHP3.0中的正規運算式大體類似於grep中用的.
(2)ereg_replace,eregi_replace
這些是替換函數.
用法:
ereg_replace(正規運算式,替換串,原字串); 字串處理函數中有一個strtr,是"翻譯"函數,類似於Perl中的tr/.../.../,
用法:
strtr(字串,"從","到");
例如:
strtr("aaabb","ab","cd")返回"cccdd".
(3)split
與explode函數有些類似,但這次可以在匹配某正規運算式的地方分割字串.
用法:
split(正規運算式,字串,[取出前多少項]);
標 題: php3:跨平台的伺服器端嵌入式指令碼語言(8)
PHP3.0中的檔案操作函數大體和C的類似,但有一些擴充,特別是除了支援對本機檔案的訪問外,也支援對HTTP和FTP的URL進行訪問,只要把這些URL作為檔案 名傳遞給檔案操作函數就可以了.
主要的檔案操作函數有:
(1)fclose,feof,fgetc,fgets,fopen,fputs,fseek,ftell,mkdir,readlink,
rename,rewind,rmdir,stat,unlink
這些和C語言中的同名函數都差不多.
(2)chgrp,chmod,chown,copy
這些的意思也都應該容易理解:
chgrp(檔案名稱,組);
chmod(檔案名稱,模式);
chown(檔案名稱,使用者);
copy(源檔案名稱,目標檔案名);
注意這些函數用的是檔案名稱而不是fopen返回的檔案號.
(3)file_exists,fileatime,filectime,filegroup,fileinode,filemtime,
fileowner,filesize,filetype,fileperms,fileumask,is_dir,
is_executable,is_file,is_link,is_readable,is_writeable
這些是檔案資訊函數,大多是接受一個檔案名稱作為參數的.
(4)fgetss
用法:
fgetss(檔案號,最大長度);
讀取檔案的一行或直到最大長度(類似於fgets),但去掉所有的
HTML和PHP標記.
(5)file
用法:
file(檔案名稱);
返回一個數組,每一個元素是檔案中的一行.
(6)tempnam
用法:
tempnam(目錄名,首碼);
返回一個臨時檔案名稱.
(7)basename,dirname
取得檔案路徑中的檔案名稱部分和目錄名部分.
在Windows系統下,"/"和"\"都可以作為目錄分割符,其他系統下只有"/"可以.
PHP中的目錄遍曆功能本來也很普通,但它卻具有一種"物件導向"的形式, 所以也提一下:
(1)dir,opendir
用法:
$d = dir("目錄名");
$handle = opendir("目錄名");
前者返回一個目錄對象,後者返回一個目錄控制代碼.
前者返回的對象有handle和path兩個屬性,第一個就相當於opendir
返回的控制代碼,第二個就是目錄名本身.訪問時用$d->handle和$d->path.
(2)read,readdir;rewind,rewinddir;close,closedir;
三組中每組的前一個是目錄對象的方法,用"對象->方法()"調用,
後一個是函數,用"函數名(目錄控制代碼)"調用.
read是返回目錄中的下一個檔案名稱.
rewind是回到目錄的第一個檔案名稱.
close是關閉目錄,不再遍曆.
(3)chdir
轉換PHP的工作目錄.
PHP中的時間函數有這麼些:
(1)date
用法:
date(格式,[時間]);
如果沒有時間參數,則使用目前時間.
格式是一個字串,其中以下字元有特殊意義:
U 替換成從一個起始時間(好象是1970年1月1日)以來的秒數
Y 替換成4位的年號.
y 替換成2位的年號.
F 替換成月份的英文全稱.
M 替換成月份的英文簡稱.
m 替換成月份數.
z 替換成從當年1月1日以來的天數.
d 替換成日數.
l 替換成星期幾的英文全稱.
D 替換成星期幾的英文簡稱.
w 替換成星期幾(數字).
H 替換成小時數(24小時制).
h 替換成小時數(12小時制).
i 替換成分鐘數.
s 替換成秒數.
A 替換成"AM"或"PM".
a 替換成"am"或"pm".
S 替換成序數字尾碼,例如:"st","nd","rd","th".
函數返回作過了替換的格式串.
(2)getdate(時間)
返回一個雜湊表,各下標是:
"seconds" -- 秒數
"minutes" -- 分數
"hours" -- 小時數
"mday" -- 日數
"mon" -- 月份數
"year" -- 年號
"yday" -- 1月1日以來的天數
"weekday" -- 星期幾,英文全稱
"month" -- 月份,英文全名
(3)gmdate
與date類似,但先將時間轉換成格林威治標準時.
(4)mktime
用法:
mktime(小時數,分數,秒數,月,日,年);
返回一個時間值,可用於其他函數.
(5)time
用法:
time();
返回1970年1月1日零點以來的秒數.
(6)microtime
用法:
microtime();
返回一個字串,用空格分成兩部分,後一部分相當於time()
的傳回值,前一部分是微秒數.
(7)checkdate
用法:
checkdate(月,日,年);
返回邏輯真或邏輯假.
如果:
[1]年在1900和32767之間(包括1900與32767);
[2]月在1到12之間;
[3]日在該月的允許日數範圍內(考慮了閏年);
則返回邏輯真.
(8)set_time_limit
用法:
set_time_limit(秒數);
規定從該句運行時起程式必須在指定秒數內運行結束,逾時則程式出錯退出.
PHP中有一組映像函數,可以動態產生gif格式的映像資料流並輸出到伺服器. 為了這組函數能夠工作,系統中必須有gd庫的支援.如果是在Unix下, 應該在編譯PHP之前先取得gd的源碼並編譯之,產生libgd.a和一些.h檔案,分別 拷到系統的庫目錄和標頭檔目錄中(例如/usr/lib和/usr/include);如果是在 Windows下,PHP3.0的安裝程式會安裝一個gd.dll檔案,在程式中加一句'dl("gd. dll");'即可使用映像函數.
主要的映像函數有:
(1)ImageCreate(寬度,高度)
返回一個映像描述符.
(2)ImageCreateFromGif(檔案名稱);
返回一個映像描述符.
(3)ImageColorAllocate(映像描述符,紅,綠,藍);
返回一個顏色描述符.由於Gif映像只能有256色,必須先對它分配調色盤,
這個語句就是分配一個調色盤項.
(4)ImageColorTransparent(映像描述符,顏色描述符);
指定某顏色為透明色.
(5)ImageArc(映像描述符,圓心橫座標,圓心縱座標,橢圓寬,橢圓高,起始
角,終止角,顏色描述符);
ImageChar(映像描述符,字型,x,y,字元,顏色描述符);
ImageCharUp(映像描述符,字型,x,y,字元,顏色描述符);
ImageCopyResized(靶心圖表像描述符,源映像描述符,目標x,目標y,源x,源y,
目標寬,目標高,源寬,源高);
ImageDashedLine(映像描述符,x1,y1,x2,y2,顏色描述符);
ImageFill(映像描述符,起始點x,起始點y,顏色描述符);
ImageFilledPolygon(映像描述符,各頂點數組,頂點數,顏色描述符);
ImageFilledRectangle(映像描述符,x1,y1,x2,y2,顏色描述符);
ImageFillToBorder(映像描述符,起始點x,起始點y,邊界色,填充色);
ImageLine(映像描述符,x1,y1,x2,y2,顏色描述符);
ImagePolygon(映像描述符,各頂點數組,頂點數,顏色描述符);
ImageRectangle(映像描述符,x1,y1,x2,y2,顏色描述符);
ImageSetPixel(映像描述符,x,y,顏色描述符);
ImageString(映像描述符,字型,x,y,字串,顏色描述符);
ImageStringUp(映像描述符,字型,x,y,字串,顏色描述符);
這些都是畫圖函數,需要略做解釋的就是多邊形的頂點數組內依次存放著
第一點x,第一點y,第二點x,第二點y,...
(6)ImageLoadFont(檔案名稱);
檔案應該是一個位元影像字型檔,返回一個字型號.系統預設帶有1-5字型號, 可以直接使用.
(7)ImageSX,ImageSY
分別得到一個映像的寬度和高度,接收一個映像描述符參數.
(8)ImageColorAt(映像描述符,x,y);
ImageColorClosest(映像描述符,紅,綠,藍);
ImageColorExact(映像描述符,紅,綠,藍);
ImageColorSet(映像描述符,顏色描述符,紅,綠,藍);
ImageColorsForIndex(映像描述符,顏色描述符);
ImageColorsTotal(映像描述符);
前三個返回一個顏色描述符.ImageColorExact如果找不到匹配則返回-1.
ImageColorsForIndex返回一個三項的數組,元素分別是紅,綠,藍值.
ImageColorsTotal返回總顏色數.
(9)ImageFontHeight,ImageFontWidth
接收一個字型號作為參數.
(10)ImageGif(映像描述符,[檔案名稱]);
如無檔案名稱,則將gif資料流送往瀏覽器.這時程式一開始應該有一句:
Header("Content-type: image/gif")
(11)ImageDestroy(映像描述符);
映像函數中有一個小Bug(至少在PHP3.0RC和PHP3.0RC3 For Unix的源碼中 已經發現,現在www.php.net上的下載檔案應該已經更改),就是ImageSetPixel總是 在(y,y)處畫點,不管x的值是什麼,不過這個問題不是很大. PHP的資料庫功能應該說是它最有用的功能之一.它的特點就是內建了對很多 資料庫的支援,而不再需要重新擴充.Perl和Tcl也都是常用的跨平台語言,都有很強的字元能力,前者字元能力更 強一些,效能更高一些;而後者有GUI能力.它們都可以擴充以支援資料庫,但這時如果 仍舊希望應用程式有跨平台能力,則需要在各種平台上各自擴充,比如在Unix平台上 對Perl擴充DBI包,在Windows 95/NT下對Perl擴充Win32::ODBC包,有時候這是很麻煩 的.而PHP由於內建了資料庫支援,就為編程人員省去了這些麻煩.
PHP3.0支援以下資料庫:
Adabas_D,dBase,dbm,filePro,mSQL,MySQL,Sybase,Oracle,PostgreSQL,Solid 另外,支援Windows下的ODBC介面. 文檔中說如果需要使用Microsoft SQL Server,可以用Sybase介面或ODBC介面訪問. Unix下編譯時間,應該在Configure時指定要帶哪些資料庫支援,系統中應該有這些資料庫的客戶程式(至少是標頭檔和庫檔案). 各種資料庫,訪問函數並不完全相同,例如那些基於SQL的資料庫顯然不能用和dBase或dbm相同的方式訪問.以下比較詳細地介紹幾種資料庫的訪問函數:
一.dBase
(1)dbase_create(檔案名稱,域數組);
域數組的每一項又是一個數組,內容為該域的名稱,類型,長度和精度(後兩項不一定要有).
域類型是一個字元,有這麼幾種值:
"L"--邏輯,"M"--備忘,"D"--日期,"N"--數字,"C"--字串返回一個資料庫描述符,失敗則返回false.
(2)dbase_open(檔案名稱,開啟檔案);
開啟檔案與C的open函數中的一樣.
返回一個資料庫描述符,失敗則返回false.
(3)dbase_numfields(資料庫描述符),dbase_numrecords(資料庫描述符);
(4)dbase_add_record(資料庫描述符,記錄);
記錄是一個數組.失敗則返回false.
(5)dbase_get_record(資料庫描述符,記錄號);
返回一個數組,下標從0開始.該數組如果用下標"deleted"訪問,可以得到 該記錄是否已被刪除的資訊.
(6)dbase_delete_record(資料庫描述符,記錄號);
(7)dbase_pack(資料庫描述符);
(8)dbase_close(資料庫描述符);
二,dbm
dbm是Unix下的一種非關聯式資料庫(至少我感覺是這樣),它實際上是檔案形式的雜湊表,每一對名字/值項稱為一個記錄.
dbm有好幾個版本,如ndbm,gdbm,等等.
(1)dbmopen(檔案名稱,標誌);
標誌是"r"(唯讀),"w"(可寫)或"n"(建立). 返回一個資料庫標識符.
(2)dbmfirstkey(資料庫標識符);
取得第一個名字(鍵),返回一個字串.
(3)dbmnextkey(資料庫標識符,當前鍵);
返回下一個鍵.
(4)dbmexists(資料庫標識符,鍵);
確認該鍵是否存在,返回true/false.
(5)dbmfetch(資料庫標識符,鍵);
返回該鍵對應的值(字串).
(6)dbminsert(資料庫標識符,鍵,值);
插入一個記錄,如指定鍵已存在則返回false,否則返回true.
(7)dbmreplace(資料庫標識符,鍵,值);
替換一個記錄,如原來沒有該記錄則插入.
(8)dbmdelete(資料庫標識符,鍵);
刪除一個記錄.
(9)dbmclose(資料庫標識符);
三,mSQL與MySQL.
mSQL(mini SQL)是一種小型的關聯式資料庫,效能不是太好,對SQL語言的支援也不夠完全,但在一些網路資料庫應用中是足夠了. MySQL是mSQL的一個變種,效能有所提高,增加了使用者存取控制. 這兩種資料庫都是通過SQL語言訪問的,但MySQL基本支援全部SQL92規範,只是"select ... where select .."不支援,另外還擴充了一些資料類型,而mSQL 則基本上不支援任何嵌套SQL語句,也不支援"update set column1=column1-1"這 樣的語句.
mSQL由於較簡單,在運行簡單的SQL語句時速度比MySQL略快,而MySQL在 線程和索引上下了功夫,運行複雜的SQL語句時比mSQL,PostgreSQL,Oracle等都要快一些. 安全性方面,mSQL通過ACL檔案設定各主機上各使用者的存取權限,預設是 全部可讀/寫,而MySQL通過一個授權庫設定使用者名稱,口令和存取權限,較可靠一些.
mSQL的儲存能力不是很清楚,MySQL的儲存能力受檔案系統限制,例如在 Linux下不能超過2G(3G?記不清楚了).
它們的好處就是都能免費得到並在Linux下安裝,不過如果用於商業用途 需要付費. PostgreSQL也是Linux下的免費資料庫,RedHat5裡面就帶了,不過我沒有用過,就不說了.
mSQL與MySQL既然本來就是差不多的兩個東西,PHP中對它們的訪問語句也 都差不多,例如msql_close與mysql_close就分別完成同樣的關閉動作.所以以下介紹 時只對mysql介紹,msql的訪問語句只需換個首碼即可(特殊情況另行說明). 注意:mSQL與MySQL訪問函數都需要有相應的許可權才能運行.
(1)mysql_connect(主機,使用者名稱,口令);
返回一個串連號.
注意:mysql各使用者的口令可以隨該使用者所在機器IP地址不同而改變. 另外,mSQL沒有使用者名稱機制,所以msql_connect只需要一個主機參數. 主機可以是IP地址或網域名稱.
(2)mysql_create_db(資料庫名);
(3)mysql_select_db(資料庫名,串連號);
串連一個資料庫.
(4)mysql_query(SQL語句,串連號);
如果SQL語句是select,則返回一個結果號.否則返回的值可以不理會. 如果失敗,返回false.
(5)mysql_fetch_array(結果號);
取出下一行,返回一個數組.可以用數字下標訪問(第一個欄位是下標 0),也可以用字串下標訪問(即使用各欄位名).
如已取了最後一行,返回false.
(6)mysql_fetch_field(結果號,[欄位序號]);
如無欄位序號,取下一個欄位. 返回一個雜湊表,下標有:
name,table,max_length,not_null,primary_key,unique_key,
multiple_key,numeric,blob,type,unsigned,zerofill
各下標的意思應該比較明白了.
(7)mysql_num_rows(結果號);mysql_num_fields(結果號);
(8)mysql_free_result(結果號);
(9)mysql_list_dbs();mysql_list_tables(資料庫名);
(10)mysql_close(串連號);
(11)mysql_pconnect(主機,使用者名稱,口令);
與mysql_connect完全相似,但建立一個"永久串連",該串連一經建立永不關閉, 即使使用mysql_close函數或程式執行完畢也不關閉.下一次試圖建立永久串連時,系統 如發現已存在一個永久串連,則直接返回該串連號而不重新建立.