php連接數(shù)據(jù)庫都需要哪些方法_php連接數(shù)據(jù)庫有什么方法
如果你要學(xué)習(xí)php,那么你首先要學(xué)習(xí)的肯定是php連接mysql數(shù)據(jù)庫。下面由學(xué)習(xí)啦小編為大家整理的php連接數(shù)據(jù)庫,希望大家喜歡!
php連接數(shù)據(jù)庫方法
連接數(shù)據(jù)庫:
使用面向?qū)ο蟮姆椒?
1.造一個(gè)mysqli對象,造連接對象
2.準(zhǔn)備一條SQL語句
3.執(zhí)行SQL語句,如果是查詢語句。成功返回結(jié)果及對象
4.從結(jié)果集對象里找到數(shù)據(jù);
查詢屬性代碼:
query($sql);//判斷返回是否有內(nèi)容,執(zhí)行成功if($reslut){//如果成功了,從結(jié)果集對象里找到數(shù)據(jù); $attr = $reslut->fetch_all();//返回索引數(shù)組:$attr = $reslut->fetch_row()//返回關(guān)聯(lián)數(shù)組:tch_assoc();//返回對象:$attr = $reslut->fetch_object();//返回既有索引又有關(guān)聯(lián):$arrt = $reslut->fetch_array(); var_dump($attr);?>
最后的返回值是一個(gè)集對象,為了方便清晰的看到結(jié)果 我們用到了fetch_all(),fetch_row(); fetch_object();
增刪改語句:
增加一條信息:
//造連接對象$db = new MySQLi("localhost","root","12345678","heiheihei");//準(zhǔn)備SQL語句$sql = "insert into cou values('3-111','嘿嘿','803')"; //執(zhí)行SQL語句$r = $db ->query($sql);if($r)//如果$r是ture{ echo "執(zhí)行成功";}else { echo "執(zhí)行失敗";}
改變一條信息:
query($sql);if($r){ echo "執(zhí)行成功";}else { echo "執(zhí)行失敗";}?>
刪除:
query($sql);if($r){ echo "執(zhí)行成功";}else { echo "執(zhí)行失敗";}?>
PHP常用魔術(shù)方法
1,__constuct()構(gòu)造函數(shù)
通常實(shí)例化完一個(gè)對象之后,都要對該對象的屬性進(jìn)行初始化!在實(shí)例化一個(gè)對象的時(shí)候,PHP系統(tǒng)會自動的調(diào)用一個(gè)名字叫作__construct()的方法,我們把這個(gè)方法叫作“構(gòu)造方法”!
其中,構(gòu)造方法可以沒有參數(shù)!
stu_name = $name; $this->stu_age = $age; } }//實(shí)例化stu對象$stu = new Stu('孫悟空','500');
2.__destruct()析構(gòu)方法
與構(gòu)造方法是一對,構(gòu)造方法是在一個(gè)對象“出生”的時(shí)候由系統(tǒng)自動調(diào)用的,而析構(gòu)方法是在一個(gè)對象“消失”的時(shí)候由系統(tǒng)自動調(diào)用的!
析構(gòu)方法的名字叫__destruct();注意里面不能有任何的參數(shù)!
注意:析構(gòu)方法是在對象銷毀之前調(diào)用的!
作用:
析構(gòu)方法的作用一般是用來釋放該對象所占用的額外的資源,而不是銷毀該對象本身!
3,__clone()克隆
觸發(fā)時(shí)機(jī):是在克隆一個(gè)對象的時(shí)候,對新對象進(jìn)行初始化的工作
//克隆方法在克隆對象的時(shí)候?qū)π聦ο蟮某跏蓟ぷ?public function __clone(){ $this->is_clone=true;}
思考:
克隆出來的對象還是不是Student類中的一個(gè)實(shí)例呢?
我們可以利用instanceof運(yùn)算符來進(jìn)行判斷!
instanceof就是用來判斷某個(gè)對象是否是某個(gè)類的一個(gè)實(shí)例!
需要兩個(gè)操作數(shù),前面是一個(gè)對象變量,后面是一個(gè)類名!返回一個(gè)布爾值!
var_dump($stu instanceof Stu);
//返回bool(true)
4.__autoload()自動加載類
當(dāng)調(diào)用不存在的類的時(shí)候自動調(diào)用!
5.__tostring()
當(dāng)將對象當(dāng)成字符串使用的時(shí)候自動調(diào)用
6.__invoke()
當(dāng)將對象當(dāng)成函數(shù)使用的時(shí)候自動調(diào)用
7,__set()
當(dāng)對無法訪問的屬性賦值時(shí)自動調(diào)用(比如:類外調(diào)用私有屬性)
8.__get()
當(dāng)對獲取無法訪問的屬性值的時(shí)候自動調(diào)用
9.__unset()
當(dāng)銷毀無法訪問的屬性的時(shí)候自動調(diào)用
10.__isset()
當(dāng)判斷無法訪問的屬性是否存在的時(shí)候自動調(diào)用
PHP二叉堆是什么
二叉堆
二叉堆是一種特殊的堆,二叉堆是完全二叉樹或者是近似完全二叉樹,二叉堆有兩種,最大堆 和 最小堆,最大堆:父結(jié)點(diǎn)的鍵值總是大于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值;最小堆:父結(jié)點(diǎn)的鍵值總是小于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值。
二叉堆實(shí)現(xiàn)流程是:
1、先讀取10個(gè)或100個(gè)數(shù)到數(shù)組里面,這就是我們的topN數(shù).
2、調(diào)用生成小頂堆函數(shù),把這個(gè)數(shù)組生成一個(gè)小頂堆結(jié)構(gòu),這個(gè)時(shí)候堆頂一定是最小的.
3、從文件或者數(shù)組依次遍歷剩余的所有數(shù).
4、每遍歷出來一個(gè)則跟堆頂?shù)脑剡M(jìn)行大小比較,如果小于堆頂元素則拋棄,如果大于堆頂元素則替換之.
5、跟堆頂元素替換完畢之后,在調(diào)用生成小頂堆函數(shù)繼續(xù)生成小頂堆,因?yàn)樾枰僬页鰜硪粋€(gè)最小的.
6、重復(fù)以上4~5步驟,這樣當(dāng)全部遍歷完畢之后,我們這個(gè)小頂堆里面的就是最大的topN,因?yàn)槲覀兊男№敹延肋h(yuǎn)都是排除最小的留下最大的,而且這個(gè)調(diào)整小頂堆速度也很快,只是相對調(diào)整下,只要保證根節(jié)點(diǎn)小于左右節(jié)點(diǎn)就可以.
7、算法復(fù)雜度的話按top10最壞的情況下,就是每遍歷一個(gè)數(shù),如果跟堆頂進(jìn)行替換,需要調(diào)整10次的情況,也要比排序速度快,而且也不是把所有的內(nèi)容全部讀入內(nèi)存,可以理解成就是一次線性遍歷.