PHP與SQL 的基礎知識
php基礎階段內容:
1 php 基本概念,常規語法
什麼是php
一種伺服器端的 HTML 指令碼/程式語言,是一種簡單的、面向物件的、解釋型的、健壯的、安全的、效能非常之高的、獨立於架構的、可移植的、動態的指令碼語言。是一種廣泛用於 Open Source(開放原始碼)的尤其適合 Web 開發並可以嵌入 HTML 的多用途指令碼語言。它的語法接近 C,Java 和 Perl,而且容易學習。該語言讓 Web 開發人員快速的書寫動態生成的網頁。
php的註釋方式
1. 多行註釋:/* */
2. 單行註釋:// 、#
php現在的最新版本
5.5.36
5.6.22
7.0.7
wamp是什麼?
W:windows
A:apache
M:mysql
P:php
一組常用來搭建動態網路或伺服器的開源軟體
php的資料型別
八種:
四種標量型別:
String(字串)
Integer(整型)
Float(浮點型,也作double)
Boolean(布林型)
兩種複合型別:
Array(陣列)
Object(物件)
兩種特殊型別:
Resource(資源)
NULL(空)
php中字串的單引號和雙引號的區別
單引號比雙引號的效率高(某些特殊情況)
單引號:中的資料視為普遍的字串
雙引號:要對其資料進行處理
php的隨機數函式?不帶引數和帶引數有什麼區別?
Rand
Mt_rand的速度比rand快
不帶引數時預設範圍(在0---32767之間)
帶引數的話rand(最小值,最大值)
怎麼定義常量?
define("常量名","常量值");值只能是標量,資料型別只能是boolean、integer、float或string;不需要加“$”
怎麼輸出內容到頁面顯示?
Echo、print
echo、print_r、var_dump區別?
echo用於輸出數值變數或者字串。但使用echo來輸出引用變數時,如陣列,僅輸出陣列的名字
print_r
作用是輸出一個數組,實際上引數expression型別可為數值變數和引用變數。
Var_dump 函式的輸出結果<變數型別,變數值,變數長度>引數expression表示各種變數型別,作用是輸出一個變數的詳細資訊。
2 php基礎函式(陣列、日期、字串)
怎麼定義一個數組?
$Arr = array();
怎麼給陣列新增加1個值?
Array_push
Array_unshift
$arr[] = ;
foreach語法結構?
Foreach($arr as $key=>$value){
}
foreach僅用於陣列和物件
刪除陣列中的指定元素 array_splice()
陣列的排序 sort()和rsort() 按鍵值排序sort()從小到大,rsort()從大到小
array_unique() 去除陣列中的相同元素
in_array()檢測一個值是否在陣列中(返回true和false)
array_search()返回的是鍵或值,返回的是鍵值所對應的鍵名
array_pop() - 刪除陣列中的最後一個元素
array_push() 陣列尾部新增一個或多個元素(入棧),返回新長度。
array_search()- 按元素值返回鍵名
怎麼獲取當前的日期時間?
date_default_timezone_get ()
gettimeofday ()
怎麼格式化顯示當前的日期時間?
Echo date(‘Y-m-d h:i:s’);
系統預設的是哪個地區的時間?
格林威治時間(GMT)
怎麼修改系統的預設時區?
date_default_timezone_set(" PRC");中國時區
修改配置檔案php.ini 找到data.timezone = ;改為data.timezone = “Asia/shanghai”;
獲取字串的長度?
$length = strlen($str);
將字串全部轉換為小寫或大寫?
字串全部轉換為小寫 :strtolower
字串全部轉換為大寫 :strtoupper
查詢字元在字串中第一次或最後一次出現的位置?
Stripos 第一次出現
Strrpos最後一次出現【不區分大小寫】
Trrpos 【區分大小寫】
3 web開發(http協議)
http的中文名稱?現在的最新版本是多少?訪問時的預設埠號?
超文字傳輸協議
2.4
3306
http協議的特點?
1. 支援客戶/伺服器模式
2. 簡單快速
3. 靈活
4. 無連線
5. 無狀態
http的資訊處理流程?
應用層、表示層、會話層、傳輸層、網路層、資料鏈路層、物理層
請求資訊分為幾個部分?
四個部分
通用頭域、請求訊息、響應訊息和主體訊息
請求方式共計有幾種?我們常用的是哪2中請求方式?
八種
1. Get
2. Head
3. Put
4. Delete
5. Post
6. Options
7. Trace
8. Connect
最常用的兩種:post/get
請求行中包含哪些資訊內容?
請求方法、URI、HTTP版本,最後以回車換行結尾,各個元素之間用空格字元隔開。 請求頭中會包含哪些資訊?
通用頭域包含請求和響應訊息都支援的頭域,通用頭域包含快取頭部Cache-Control、Pragma及資訊性頭部Connection、Date、Transfer-Encoding、Update、Via。
響應資訊分為幾個部分?
狀態行,響應頭,空行,訊息體
一個狀態行、若個訊息頭、已經響應正文、其中的一些訊息頭和正文都是可選的,訊息頭和正文內容之間要用空格隔開
狀態行中包含哪些資訊?
HTTP版本號
狀態碼分幾類?分別代表啥意思?列舉常見的狀態碼及其含義?
100-199 用於指定客戶端應相應的某些動作。 200-299 用於表示請求成功。 300-399 用於已經移動的檔案並且常被包含在定位頭資訊中指定新的地址資訊。 400-499 用於指出客戶端的錯誤。 500-599 用於支援伺服器錯誤。
常見:
200:伺服器成功返回網頁
302:臨時移動
404:請求的網頁不存在
502:錯誤閘道器 503:伺服器超時
100 Continue 初始的請求已經接受,客戶應當繼續傳送請求的其餘部分
101 Switching Protocols 伺服器將遵從客戶的請求轉換到另外一種協議
200 OK 一切正常,對GET和POST請求的應答文件跟在後面
201 Created 伺服器已經建立了文件,Location頭給出了它的URL。
202 Accepted 已經接受請求,但處理尚未完成。
203 Non-Authoritative Information 文件已經正常地返回,但一些應答頭可能不正確,因為使用的是文件的拷貝
204 No Content 沒有新文件,瀏覽器應該繼續顯示原來的文件。如果使用者定期地重新整理頁面,而Servlet可以確定使用者文件足夠新,這個狀態程式碼是很有用的
205 Reset Content 沒有新的內容,但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容
206 Partial Content 客戶傳送了一個帶有Range頭的GET請求,伺服器完成了它
300 Multiple Choices 客戶請求的文件可以在多個位置找到,這些位置已經在返回的文件內列出。如果伺服器要提出優先選擇,則應該在Location應答頭指明。
301 Moved Permanently 客戶請求的文件在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL。
302 Found 類似於301,但新的URL應該被視為臨時性的替代,而不是永久性的。
303 See Other 類似於301/302,不同之處在於,如果原來的請求是POST,Location頭指定的重定向目標文件應該通過GET提取
304 Not Modified 客戶端有緩衝的文件併發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文件)。伺服器告訴客戶,原來緩衝的文件還可以繼續使用。
305 Use Proxy 客戶請求的文件應該通過Location頭所指明的代理伺服器提取
307 Temporary Redirect 和302(Found)相同。許多瀏覽器會錯誤地響應302應答進行重定向,即使原來的請求是 POST,即使它實際上只能在POST請求的應答是303時才能重定向。由於這個原因,HTTP 1.1新增了307,以便更加清除地區分幾個狀態程式碼: 當出現303應答時,瀏覽器可以跟隨重定向的GET和POST請求;如果是307應答,則瀏覽器只能跟隨對GET請求的重定向。
400 Bad Request 請求出現語法錯誤。
401 Unauthorized 客戶試圖未經授權訪問受密碼保護的頁面。應答中會包含一個WWW-Authenticate頭,瀏覽器據此顯示使用者名稱字/密碼對話方塊,然後在填寫合適的Authorization頭後再次發出請求。
403 Forbidden 資源不可用。
404 Not Found 無法找到指定位置的資源
405 Method Not Allowed 請求方法(GET、POST、HEAD、Delete、PUT、TRACE等)對指定的資源不適用。
406 Not Acceptable 指定的資源已經找到,但它的MIME型別和客戶在Accpet頭中所指定的不相容
407 Proxy Authentication Required 類似於401,表示客戶必須先經過代理伺服器的授權。
408 Request Timeout 在伺服器許可的等待時間內,客戶一直沒有發出任何請求。客戶可以在以後重複同一請求。
409 Conflict 通常和PUT請求有關。由於請求和資源的當前狀態相沖突,因此請求不能成功。
410 Gone 所請求的文件已經不再可用,而且伺服器不知道應該重定向到哪一個地址。它和404的不同在於,返回407表示文件永久地離開了指定的位置,而404表示由於未知的原因文件不可用。
411 Length Required 伺服器不能處理請求,除非客戶傳送一個Content-Length頭。
412 Precondition Failed 請求頭中指定的一些前提條件失敗
413 Request Entity Too Large 目標文件的大小超過伺服器當前願意處理的大小。如果伺服器認為自己能夠稍後再處理該請求,則應該提供一個Retry-After頭
414 Request URI Too Long URI太長
416 Requested Range Not Satisfiable 伺服器不能滿足客戶在請求中指定的Range頭
500 Internal Server Error 伺服器遇到了意料不到的情況,不能完成客戶的請求伺服器不支援實現請求所需要的功能。例如,客戶發出了一個伺服器不支援的PUT求502 Bad Gateway 伺服器作為閘道器或者代理時,為了完成請求訪問下一個伺服器,但該伺服器返回了非法的應答
503 Service Unavailable 伺服器由於維護或者負載過重未能應答。例如,Servlet可能在資料庫連線池已滿的情況下返回503。伺服器返回503時可以提供一個Retry-After頭
504 Gateway Timeout 由作為代理或閘道器的伺服器使用,表示不能及時地從遠端伺服器獲得應答
505 HTTP Version Not Supported 伺服器不支援請求中所指明的HTTP版本
EGPCS指代的是什麼?
指的是可以從伺服器配置和請求的資訊中獲取的資訊,它包括了environment、GET、POST、cookie、server
怎麼獲取訪問使用者的IP地址?
getenv(“HTTP_ X_FORWARDED_FOR”);
請求中的Get和Post區別?
get是從伺服器上獲取資訊,post是向伺服器傳送資料,現在都是提交
如果要上傳檔案需要進行哪些設定?
enctype="multipart/form-data"
上傳檔案的資訊怎麼提取?
FILES[]
怎麼獲取當前檔案的路徑和名稱?
echo $_FILES['img']['tmp_name']
echo $_FILES['img']['name']
怎麼獲取當前檔案的資料夾路徑?
Echo __FILE__
怎麼解決http無狀態的問題?
建立 表單隱藏字; Cookie; Session; URL重寫;
什麼是cookie?
Cookie基本上就是一個包含多個欄位的字串。一臺伺服器可以在響應頭部發送一個或多個cookie到瀏覽器。一些cookie的欄位指明哪些瀏覽器頁面可以在請求中傳送
什麼是session?
Session 是儲存在伺服器端的會話,相對安全
cookie和session的區別?
cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上;
Cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙(考慮到安全應當使用session);
Session會在一定時間內儲存在伺服器上。當訪問增多時,會比較佔用你伺服器的效能(考慮到減輕伺服器效能方面,應當使用Cookie);
單個cookie儲存的資料不能超過4k,很多瀏覽器都限制一個站點最多儲存20個cookie;
綜上所述
將登入資訊等重要資訊儲存到session中,
其他資訊需要保留,可放在cookie中。
怎麼建立設定cookie資訊?
使用cookie前必須設定cookie. int setcookie(string name, string value, int expire,
string path, string domain, int secure)
怎麼使用session?
<?php
// 啟動Session
session_start();
// 宣告一個名為 admin 的變數,並賦空值。
$_SESSION["admin"] = null;
$_SESSION[“count"] = $_SESSION[“count"]+1;
echo “這裡已經有 $_SESSION[“count"] 人瀏覽過了”;
?>
session的常見函式有哪些?各有什麼用處?
ession_start(); //初始化session.需在檔案頭部
$_SESSION[name]=value; //配置Seeeion
echo $_SESSION[name]; //使用session
isset($_SESSION[name]); // 判斷
unset($_SESSION[name]); //刪除
session_destroy(); //刪除所有session,但是寫入cookie的資訊無法自動去掉
如果客戶端禁止了cookie怎麼處理?
4 ajax
ajax的中文名稱?
ajax簡述?
也就是說AJAX 是與伺服器交換資料並更新部分網頁的藝術,在不重新載入整個頁面的情況下。
AJAX 是一種用於建立快速動態網頁的技術。
通過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。
傳統的網頁(不使用 AJAX)如果需要更新內容,必需過載整個網頁面。
ajax中包含哪些技術?
7項技術,其中Javascript、XMLHttpRequest、Dom、XML是最為重要
ajax物件有哪些常用函式,及其功能?
Abort():停止當前請求;
getAllResponseHeaders():作為字串返回完整的headers;
getResponseheader(“hederLabel”):作為字串返回單個的header標籤;
Open(“method”,“URL”[,asyncFlag[,”userName”[,”password”]]]):設定未決的請求的目標URL方法和其他引數;
Send(content):傳送請求;
setRequestHeader(“label”,”value”):設定header並和請求一起傳送;
ajax物件的常用屬性有哪些?
Onreadystatechange:狀態改變的事件觸發器
readyState:物件狀態(integer):0=未初始化,1=讀取中,2=已讀取,3=互動中,4=完成
responseText:伺服器程序返回資料的文字
responseXML:伺服器程序返回資料的相容DOM的XML文件物件
Status:伺服器返回的狀態碼,如404=“檔案未找到”、200=“成功”
statusText:伺服器返回的狀態文字資訊
jquery的ajax函式格式及其常用引數、寫法?
$.ajax({
type: "POST", //請求方式
url: "jqajax1.php", //請求的地址
data: "username="+$("input[type='text']").val(), //請求的引數字串
dataType: "json", //設定返回的資料型別,預設值為"text"
success: function(msg){//接收成功返回的資料結果
$("#div1").html( "接收的返回值: " + msg );
},error: function(msg){
$("#div1").html( "有錯誤了: " + msg );
}
});
5 php+mysql(mysql函式)
要連線mysql之前的要設定什麼?
在您能夠訪問並處理資料庫中的資料之前,您必須建立到達資料庫的連線。
php操作mysql資料庫的步驟?
mysql_connect() 建立資料庫連線
mysql_select_db() 選擇操作的資料庫
mysql_query() 執行SQL語句
mysql_fetch_array() 返回一行記錄(陣列)
(Mysql_result(),mysql_fetch_row(),mysql_fetch_array())
mysql_num_rows() 返回結果集中行的數目
mysql_close() 關閉資料庫
建立資料庫連線的函式?引數有幾個?每個引數代表什麼含義?
mysql_connect() 建立資料庫連線
引數共計5個:
第一個引數:伺服器名稱或者地址,同時可以加上埠號(如果是預設的3306,則可以省略);
第二個引數:登入的使用者名稱;
第三個引數:登入密碼;
第四個引數:是否使用可能重名的相同連線物件(如果該物件已經建立),預設為false;
第五個引數:常量組合,設定連線的模式,預設值為0;
(連線成功,返回結果為資源型別;如果失敗,報錯並且返回false)
怎麼選擇要操作的資料庫名稱?
mysql_select_db(“資料庫名稱”) 選擇操作的資料庫
執行sql語句的函式?該函式返回值是什麼型別?
mysql_query() ;僅對select,show,describe或explain等語句如果成功就返回資源型別;
對於update,delete,drop,insert等語句,成功返回true,失敗返回false。
怎麼獲取查詢結果集的數量?
Mysql_result(),
mysql_fetch_row(),
mysql_fetch_array()
怎麼提取結果集中的資料?提取出來的資料是什麼樣的格式?
mysql_fetch_array();
MYSQL_ASSOC():返回的陣列將以該記錄的欄位名稱作為下標
MYSQL_NUM():返回的陣列以從0開始的數字為下標
MYSQL_BOTH:返回的陣列既可以用欄位名為下標,也可以用數字為下標
怎麼關閉資料庫連線?
mysql_close();
6 其他
empty()
empty()函式檢查一個變數是否為空或零值,如果變數值是非空或非零值,則empty()返回FALSE,否則返回TRUE
isset()
isset()函式來檢查變數是否存在
gettype()
gettype()獲取變數的型別
settype()
一種強制轉換型別的函式方法
語法格式:bool settype(mixed $var, string $type)
例如:$var="123hello"; //$var為字串
settype($var, "int"); //$var現在為整型(值為123)
錯誤控制運算子 @
將其放置在PHP表示式之前,該表示式可能產生的任何錯誤資訊都將被忽略
執行運算子 `
PHP支援一個執行運算子,即反引號(``)
在PHP指令碼中,將外部程式的命令列放入反引號中,並使用echo()或print()函式將其顯示,PHP將會在到達該行程式碼時啟動這個外部程式,並將其輸出資訊返回,其作用效果與shell_exec()函式相同
反引號運算子在激活了安全模式或者關閉了 shell_exec() 時是無效的。
與其它某些語言不同,反引號不能在雙引號字串中使用。
字串拼接 .
使用“.”
定界符 <<<+名稱
“<<<”之後提供一個標誌符,然後是字串,最後用同樣的標誌符結束字串。結束標誌符必須從行的第一列開始,標誌符必須遵循PHP中標記的命名規則:只能包含字母、數字、下劃線,而且必須以下劃線或非數字字元開始