PHP day 03

0x14 文件處理
1.打開文件

resource fopen ( string filename, string mode [, bool use_include_path]);
#filename是要打開的包含路徑的文件名,可以是相對路徑,也可以是絕對路徑。如果沒有任何前綴則表示打開的是本地文件。
#mode是打開文件的方式
#use_include_path是可選的,該參數在配置文件php.ini中指定一個路徑,如F:\AppServ\ www\mess.php,如果希望服務器在這個路徑下打開所指定的文件,可以設置爲1或 true。

2.關閉文件

bool fclose ( resource handle ) ;

3.讀取文件
1)讀取整個文件
(1)readfile()函數

int readfile(string filename) ;
#readfile()函數用於讀入一個文件並將其寫入到輸出緩衝,如果出現錯誤則返回false。
#使用readfile()函數,不需要打開/關閉文件,不需要echo/print等輸出語句,直接寫出文件路徑即可。

(2)file()函數

array file(string filename) ;
#file()函數也可以讀取整個文件的內容,只是file()函數將文件內容按行存放到數組中,包括換行符在內。如果失敗則返回false。

(3)file_get_contents()函數

string file_get_contents(string filename[,int offset[,int maxlen]]) ;
#該函數將文件內容(filename)讀入一個字符串。如果有offset和maxlen參數,將在參數offset所指定的位置開始讀取長度爲maxlen的內容。如果失敗,返回false。
#適用於二進制對象,是將整個文件的內容讀入到一個字符串中的首選方式。

2)讀取一行數據
(1)fgets()函數

string fgets( int handle [, int length] ) ;
#handle是被打開的文件,length是要讀取的數據長度。
#函數能夠實現從handle指定文件中讀取一行並返回長度最大值爲length-1個字節的字符串。在遇到換行符、EOF或者讀取了length-1個字節後停止。如果忽略length參數,那麼讀取數據直到行結束。

(2)fgetss()函數

string fgetss ( resource handle [,int length [,string allowable_tags]] ) ;
#fgetss()函數是fgets()函數的變體,用於讀取一行數據,同時,該函數能夠從讀取的文件中過濾掉任何html和php標記。可以使用allowable_tags參數來控制哪些標記不被過濾掉。

3)讀取一個字符

fgetc()函數
string fgetc ( resource handle ) ;
#在對某一個字符進行查找、替換時,需要有針對性地對某個字符進行讀取,在PHP中可以使用fgetc()函數實現此功能。函該函數返回一個字符,該字符從handle指向的文件中得到。遇到EOF則返回false。 

4)讀取任意長度的字串

fread()函數
string fread ( int handle, int length ) ;
#fread()可以從文件中讀取指定長度的數據
#參數handle爲指向的文件資源,length是要讀取的字節數。當函數讀取length個字節或到達EOF時停止執行。

4.寫入文件

int fwrite ( resource handle, string string [, int length] ) ;
#該函數把內容string寫入文件指針handle處。如果指定了長度length,則寫入length個字節後停止。如果文件內容長度小於length,則會輸出全部文件內容。

int file_put_contents ( string filename, string data [, int flags]) ;
#filename爲寫入數據的文件。data爲要寫入的數據。flags可以是FILE_USE_INCLUDE_PATH、FILE_APPEND或LOCK_EX,LOCK_EX爲獨佔鎖定。
#注意:使用file_put_contents()函數和依次調用fopen()、fwrite()、fclose()函數的功能一樣。 

5.遠程文件訪問

fopen('http://127.0.0.1/tm/sl/index.php','rb'); 
#PHP支持URL格式的文件調用,只要在php.ini中配置一下即可。在PHP中找到allow_url_fopen,將該選項設爲ON。重啓服務器後即可使用HTTP或FTP的URL格式。

6.文件指針
1)rewind()函數

bool rewind ( resource handle ) ;
#該函數將文件handle的指針設爲文件流的開頭

2)fseek()函數

int fseek ( resource handle, int offset [, int whence] ) ;
#fseek()函數實現文件指針的定位
#handle參數爲要打開的文件。offset爲指針位置或相對whence參數的偏移量,可以是負值。
#whence的值包括以下3種:
   SEEK_SET,位置等於offset字節。
   SEEK_CUR,位置等於當前位置加上offset字節。 
   SEEK_END,位置等於文件尾加上offset字節。
#如果忽略whence參數,系統默認爲SEEK_SET。

3)feof()函數

bool feof ( resource handle ) ;
#該函數判斷文件指針是否在文件尾,如果文件指針到了文件結束的位置,就返回true,否則返回false。

4)ftell()函數

int ftell ( resource handle ) ;
#返回當前指針的位置

7.文件上傳
要想順利地實現上傳功能,首先要在php.ini中開啓文件上傳,並對其中的一些參數作出合理的設置。

找到File Uploads項,可以看到下面有3個屬性值,表示含義如下。
file_uploads:如果值是on,說明服務器支持文件上傳;如果爲off,則不支持。
upload_tmp_dir:上傳文件臨時目錄。在文件被成功上傳之前,文件首先存放到服務器端的臨時目錄中。如果想要指定位置,可在這裏設置。否則使用系統默認目錄即可。
upload_max_filesize:服務器允許上傳的文件的最大值,以MB爲單位。系統默認爲2MB,用戶可以自行設置。除了File
Uploads項,還有幾個屬性也會影響到上傳文件的功能。
max_execution_time:PHP中一個指令所能執行的最大時間,單位是秒。
memory_limit:PHP中一個指令所分配的內存空間,單位是MB。

$_FILES變量存儲的是上傳文件的相關信息,這些信息對於上傳功能有很大的作用。該變量是一個二維數組。保存的信息 如下:
$_FILES[filename][name]存儲了上傳文件的文件名。如exam.txt、myDream.jpg等
$_FILES[filename][size]存儲了文件大小。單位爲字節
FILES[filename][tmpname]_FILES[filename][tmp_name]文件上傳時,首先在臨時目錄中被保存成一個臨時文件。該變量爲臨時文件名_FILES[filename][type]上傳文件的類型 $_FILES[filename][error]存儲了上傳文件的結果。如果返回0,說明文件上傳成功

PHP中使用move_uploaded_file()函數上傳文件。該函數的語法如下: bool move_uploaded_file (
string filename, string destination )
move_uploaded_file()函數將上傳文件存儲到指定的位置。如果成功,則返回true,否則返回false。參數filename是上傳文件的臨時文件名,即$_FILES[tmp_name];參數destination是上傳後保存的新的路徑和名稱。
PHP支持同時上傳多個文件,只需要在表單中對文件上傳域使用數組命名即可。

0x15 PHP操作mysql數據庫
1.連接數據庫

mysql_connect('hostname','username','password');

2.選擇數據庫

mysql_select_db(string 數據庫名[,resource link_identifier]);
#如果沒有指定連接標識符,則使用上一個打開的連接

3.執行SQL語句

mysql_query(string query[,resource link_identifier]);
#成功則返回true,失敗返回false

4.獲取sql執行結果

mysql_fetch_array(resource result[,int result_type])
#result:需要mysql_query返回的數據指針
#result_type:要傳入的是MYSQL_ASSOC(關聯索引)、MYSQL_NUM(數字索引)、MYSQL_BOTH(同時包含關聯和數字索引的數組),默認值是MYSQL_BOTH。

5.獲取sql執行結果的一行

mysql_fetch_object (resource result);
#使用$row->name獲取name列中的元素

6.逐行獲取sql執行結果

mysql_fetch_row(resource result);
#使用$row[0]獲取第一個元素

7.計算sql執行結果有多少行

mysql_num_rows(resource result);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章