答:
echo 用于輸出變量或字符串,他是一個(gè)php語句,并非一個(gè)函數(shù),所以他并不存在返回值。
print 同echo一樣 print也不是一個(gè)函數(shù) 因此無需對其使用括號,但print稍慢于echo,需要注意的是使用print() 加上括號時(shí)會(huì)返回1。
printf()函數(shù)用于輸出格式化字符串,sprintf()函數(shù)返回一個(gè)格式化后的字符串,而不是輸出。
print_r()函數(shù)用于打印關(guān)于變量的易于理解的信息。
var_dump()函數(shù)用于打印變量的內(nèi)容,類型,長度等。
<?phpecho "aaa ","bbb ","ccc "; //aaa bbb cccecho("aaa"); //aaa//echo("aaa","bbb");//會(huì)報(bào)錯(cuò),不可以傳遞多個(gè)參數(shù)。print "aaa"; //aaa$a = print("aaa"); //$a = 1$str = "aaa";$b = print_r($str); //打印輸出 ,并返回1.echo $b; // 1$b = print_r($str,true); //不打印輸出,將$str作為返回值。echo $b; // aaaprintf("My name is %s %s","朱","孝遠(yuǎn)"); //My name is 朱 孝遠(yuǎn)//在s前添加1/$或2/$...表示后面的參數(shù)顯示的位置printf("My name is %s %1/$s","朱","孝遠(yuǎn)"); //My name is 朱 朱sprintf("My name is %s %s","朱","孝遠(yuǎn)"); //沒有任何輸出$c = sprintf("My name is %s %s","朱","孝遠(yuǎn)");echo $c; //My name is 朱 孝遠(yuǎn)2、表單中g(shù)et與post提交方法的區(qū)別。
答:get是發(fā)送請求HTTP協(xié)議通過url參數(shù)傳遞進(jìn)行接收,而post是實(shí)體數(shù)據(jù),可以通過表單提交大量信息。
3、session與cookie的區(qū)別。
答:session:存儲(chǔ)用戶訪問的全局唯一變量,存儲(chǔ)在服務(wù)器上的PHP指定的目錄中的(session_dir)的位置進(jìn)行的存放。
cookie:用來存儲(chǔ)連續(xù)訪問一個(gè)頁面時(shí)所使用,是存儲(chǔ)在客戶端,對于Cookie來說是存儲(chǔ)在WIn的Temp目錄中。
兩者都可通過時(shí)間來設(shè)置時(shí)間長短。
4、禁用Cookie后,Session還可以用嗎,有什么解決方案?
第一種:通過url傳值,把session_id附加到url上。(缺點(diǎn):整個(gè)站點(diǎn)中不能有純靜態(tài)的頁面,因?yàn)榧冹o態(tài)頁面session_id將無法繼續(xù)傳到下一頁面)
第二種:通過隱藏表單,把session_id放到表單的隱藏文本框中同表單一塊提交。(缺點(diǎn):不適用<a>標(biāo)簽之中直接跳轉(zhuǎn)的非表單的情況)
5、HTTP和HTTPS的區(qū)別。
答:HTTP效率更高,HTTPS安全性更高。
HTTP:超文本傳輸協(xié)議,信息明文傳輸,是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的網(wǎng)絡(luò)協(xié)議。HTTP使用的端口號是80,HTTP協(xié)議是無狀態(tài)的(所以采用session或cookie去標(biāo)識(shí)用戶狀態(tài))。
HTTPS:是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。
HTTPS使用的端口443,HTTPS協(xié)議需要到ca申請證書,一般免費(fèi)的證書很少,需要交費(fèi)。
6、數(shù)據(jù)庫中的事務(wù)是什么?事務(wù)的四個(gè)特性?
答:事務(wù)是指用戶定義的 一個(gè)數(shù)據(jù)庫操作序列,這些操作要么全做,要么全不做,是一個(gè)不可分割的工作單位。
事務(wù)具有4個(gè)特征:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持續(xù)性(Durability)。這4個(gè)特性簡稱為ACID特性。
原子性:事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
一致性:事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變到了一個(gè)一致性狀態(tài)。
隔離性:一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。
持續(xù)性:持續(xù)性也稱永久性,指一個(gè)事務(wù)一旦提交,它對數(shù)據(jù)庫中的數(shù)據(jù)的改變就應(yīng)該是永久的。
7、索引的最左前綴原則?
答:也是最左優(yōu)先,比如為name,age,city三個(gè)列建立多列索引,相當(dāng)于創(chuàng)建了name和name,age組合索引和name,age,city的組合索引。如果where條件選擇的是age and city 或 age 、city這些字段來查,則不會(huì)使用到索引,會(huì)遍歷全表查找。一般情況下,where子句中使用最頻繁的一列放在最左邊。
8、MySQL存儲(chǔ)引擎MyISAM與InnoDB區(qū)別。
答:Mysql中有很多引擎,InnoDB和MyISAM是最常使用的兩種,其中MyISAM是MySql默認(rèn)存儲(chǔ)引擎。
事務(wù):InnoDB支持事務(wù)功能,MyISAM不支持并且MyISAM的執(zhí)行速度更快且性能更好。
數(shù)據(jù)操作語言:MyISAM引擎適合執(zhí)行大量select操作,InnoDB引擎適合執(zhí)行大量的inset或update操作。
鎖機(jī)制:MyISAM鎖的粒度是表級即表級鎖,InnoDB支持行級鎖定即行級鎖。
物理結(jié)構(gòu):MyISAM表存放在三個(gè)文件中:frm文件存放表格定義,數(shù)據(jù)文件是MYD(MyData),索引文件是MYI(MYIndex)。
InnoDB表由共享空間、日志文件組(rado文件)、表結(jié)構(gòu)定義文件組成。若將innodb_file_pre_table設(shè)置為on,則系統(tǒng)將為每個(gè)表單獨(dú)生成一個(gè)table_name.ibd的文件,在此文件中存儲(chǔ)與表相關(guān)的數(shù)據(jù)、索引、表的內(nèi)部數(shù)據(jù)字典信息等。
索引:MyISAM支持全文類型索引,InnoDB不支持全文索引。
查詢表的行數(shù):比如執(zhí)行select count(*) from table ,MyISAM引擎,表的行數(shù)存儲(chǔ)在表中,沒有使用where條件 可以直接讀取出保存好的行數(shù),所以效率較高。
InnoDB中不保存表的具體行數(shù),需要掃描一遍整個(gè)表來計(jì)算多少行,所以效率較低。
總結(jié):MyISAM管理非事務(wù)表。它提供高速存儲(chǔ)和檢索,以及全文搜索能力。如果應(yīng)用中需要大量使用select查詢,那么MyISAM是更好的選擇。
InnoDB用于事務(wù)處理應(yīng)用程序,具有眾多特性,包括ACID事務(wù)。如果應(yīng)用中需要執(zhí)行大量的insert或update操作,則應(yīng)該使用InnoDB。
新聞熱點(diǎn)
疑難解答
網(wǎng)友關(guān)注