易班技術部新生培訓--PHP與MySQL

PHP操作MySQL有多種方法

  • mysql擴展(在后面版本會被移除,不推薦使用)
  • mysqli擴展
  • PDO擴展
    在這里根據(jù)慕課網(wǎng)的教程(教程鏈接),給大家整理了一下mysqli基本的使用方法顿仇。
    主流PHP框架很多都是采用封裝PDO的數(shù)據(jù)庫操作類來操作數(shù)據(jù)庫结序,等大家以后學習框架后自然會體會到框架操作數(shù)據(jù)庫的快速方便優(yōu)雅,但是現(xiàn)在以基礎為重沉眶。

mysqli有面向?qū)ο蟮慕涌谂c面向過程的接口,因此有兩種使用方式揖盘,一種是對象的使用方式言蛇,一種是函數(shù)的使用方式,大家根據(jù)習慣選擇自己喜歡的吧笆包,個人比較喜歡面向?qū)ο笫降摹?/p>

因為涉及到類簡單講一下類的基本概念,表達能力一般环揽,用代碼解釋,你們感受下- -庵佣。
類是面向?qū)ο蟪绦蛟O計的基本概念歉胶,通俗的理解類就是對現(xiàn)實中某一個種類的東西的抽象, 比如汽車可以抽象為一個類巴粪,汽車擁有名字通今、輪胎粥谬、速度、重量等屬性衡创,可以有換擋帝嗡、前進、后退等操作方法璃氢。(以上文字抄自慕課網(wǎng)- -)

類的好處:數(shù)據(jù)與可以執(zhí)行的方法一起封裝,看起來更清晰狮辽,另外可以隱藏具體實現(xiàn)與數(shù)據(jù)一也,只對外公開接口。每一個類只需要考慮實現(xiàn)自己的接口喉脖,使用類時椰苟,只需要知道類提供了哪些接口。
下面只是一個最簡單的類树叽,還有更多的特性等待大家去學習舆蝴。

<?php
class people{
 //類里的變量叫類的屬性,public是訪問修飾符,表示公開
    public $name='lucy';
        public $age=25;
//類里的function叫類的方法
    public function getAction(){
        echo '我是一個方法';
    }
    public function getAge(){
        return $this->age;//$this關鍵字可以理解為對象本身
    }
}

$person=new people();//實例化一個類,$person是people這個類的一個實例化對象
echo $person->name;//lucy.輸出對象的name屬性
$person->getAction();//我是一個方法.調(diào)用對象的一個方法.
echo $person->getAge();//25

請自行更改數(shù)據(jù)庫的連接選項

$con=new mysqli('127.0.0.1','root','root','test');
$con=mysqli_connect('127.0.0.1','root','root')

有幾個理解點:

  • 上述代碼的$con你可以理解為PHP與MySQL的一個【連接】
  • 下面的$query你可以理解為查詢的【結(jié)果集】
$query=mysqli_query($con,$sql_1);
//或者
$query=$con->query($sql)
  • 下面這些方法或函數(shù)就是對你查到的結(jié)果集進行操作题诵,讓他們以【怎樣的形式】展現(xiàn)出來洁仗,關聯(lián)數(shù)組?索引數(shù)組性锭?對象赠潦?
mysqli_fetch_row($query)
//或者
$query->fetch_assoc()

數(shù)組

$a=array('id'=>1,'name'=>'zhang');//這是關聯(lián)數(shù)組
$a=array(1=>1,2=>'zhang');//這是索引數(shù)組

大家把代碼在本地跑一下草冈,結(jié)合慕課網(wǎng)或其他教程多用就熟練了
有啥不明白的來問各自組長或者問我吧她奥,講錯的或者代碼出錯的也請指出。

面向?qū)ο蟮氖褂梅椒?/p>

<?php
    // http://www.imooc.com/video/6759 視頻教程在這里
    header("Content-type:text/html;charset=utf-8");
    /* 連接mysql怎棱,有錯就打印錯誤
     或者:
     $con=new mysqli('127.0.0.1','root','root')
     if(!$con->select_db('test')){
        echo $con->error;
        }
    設置編碼哩俭,防止亂碼
     或者:
     $con=new mysqli();
     $con->connect('127.0.0.1','root','root')
     */
    $con=new mysqli('127.0.0.1','root','root','test');
    if($con->connect_error){
        echo $con->error;
        die("連接出錯,die方法結(jié)束進程");
        // die('Connect Eroor'.$con->connect_error);
    }

    // 設置編碼拳恋,防止亂碼
    if(!$con->set_charset('utf8')){
        echo $con->error;
    }

    // 創(chuàng)建表test
    $sql=<<<EOF
         CREATE TABLE IF NOT EXISTS test_table(
         id TINYINT UNSIGNED AUTO_INCREMENT KEY,
         username VARCHAR(20) NOT NULL,
         password VARCHAR(20) NOT NULL
         );
EOF;
    if($con->query($sql)){
        $query=$con->query("SELECT * FROM test_table");
        if($query&&$query->num_rows==0){
            $sql="INSERT test_table(username,password)VALUES('zhang','123'),('li','456')";
            $con->query($sql);
        }
    }else{
        echo $con->error ;
        die("創(chuàng)建表出錯");
    }


    $sql_1="SELECT * FROM test_table";
    echo '<h4>mysqli面向?qū)ο笫褂梅椒?lt;/h4>';
    echo '<h4>這里只是舉了部分常用方法凡资,還有很多請自行看視頻或相關手冊</h4>';
    echo'<h4>以下都是獲取查詢數(shù)據(jù)的第一條,如果要獲取全部的可以使用循環(huán)語句打印出來</h4>';
    echo'<h4>在這里诅岩,$con是連接標識符讳苦,$query是執(zhí)行的結(jié)果集</h4>';
    echo'<hr>';

    $query=$con->query($sql_1);//執(zhí)行sql語句,將執(zhí)行結(jié)果賦給一個變量
    if($query){
        echo '$query->fetch_row():以索引數(shù)組的形式獲取數(shù)據(jù)(這個循環(huán)打印了)<br><br>';
        //循環(huán)打印
        while ($result=$query->fetch_row()) {
            $data[]=$result;
            echo 'name:'.$result[0].' '.'password:'.$result[1].'<br>';
        }
        print_r($data);
        echo '<hr>';
    }
    $query=$con->query($sql_1);
    if($query){
        echo '$query->fetch_assoc():以關聯(lián)數(shù)組的形式獲取數(shù)據(jù)<br><br>';
        $result=$query->fetch_assoc();
        print_r($result);
        echo '<hr>';
    }
    $query=$con->query($sql_1);
    if($query){
        echo '$query->fetch_array(MYSQLI_BOTH):參數(shù)不寫就是默認以混合數(shù)組(索引數(shù)組吩谦、關聯(lián)數(shù)組)的形式獲取數(shù)據(jù)<br><br>';
        $result=$query->fetch_array(MYSQLI_BOTH);//以混合數(shù)組形式,參數(shù)可寫可不寫
        print_r($result);
        echo '<hr>';
    }
    $query=$con->query($sql_1);
    if($query){
        echo '$query->fetch_array(MYSQLI_NUM):以索引數(shù)組的形式獲取數(shù)據(jù)鸳谜,等同于$query->fetch_row()<br><br>';
        $result=$query->fetch_array(MYSQLI_NUM);
        print_r($result);
        echo '<hr>';
    }
    $query=$con->query($sql_1);
    if($query){
        echo '$query->fetch_array(MYSQLI_ASSOC):以關聯(lián)數(shù)組的形式獲取數(shù)據(jù),等同于$query->fetch_assoc()<br><br>';
        $result=$query->fetch_array(MYSQLI_ASSOC);
        print_r($result);
        echo '<hr>';
    }
    $query=$con->query($sql_1);
    if($query){
        echo '$query->num_rows:獲取結(jié)果數(shù)目<br><br>';
        $result=$query->num_rows;
        print_r($result);
        echo '<hr>';
    }
    $query=$con->query($sql_1);
    if($query){
        echo 'mysqli_num_rows:以對象形式獲取數(shù)據(jù)<br><br>';
        $result=$query->fetch_object(   );
        print_r($result);
        echo"<br>";
        
        echo $result->id;
        echo '<br>';
        echo $result->username.'<br>';
        echo $result->password.'<br>';
        echo '<hr>';
    }
echo"<h4>以下選擇性看</h4>";
echo 'mysqli_multi_query:執(zhí)行多條sql語句,注意每句結(jié)束的“;”<br><br>';
$sql="INSERT test_table(username,password)VALUES('wang','789'),('hao','101112');";
$sql.="UPDATE test_table SET password='11111111';";
// if($con->multi_query($sql)){
//  echo 'multi success';
// };
// 
$sql2="SELECT * FROM test_table where id=1;";
$sql2.="SELECT * FROM test_table where id=2";
if($con->multi_query($sql2)){
    $rows=array();
    echo "success<br>";
    do{
        if($result=$con->store_result()){
            $rows[]=$result->fetch_all(MYSQLI_ASSOC);
        }
    }while($con->more_results()&&$con->next_result());
}else{
        echo $con->error;
}
print_r($rows);
//關閉連接
$con->close();
echo"<h4>預處理和事務處理暫時不需要掌握式廷,請以后自己看視頻或者以后有機會講</h4>";



面向過程的使用方法

<?php
    //面向過程
    header("Content-type:text/html;charset=utf-8");
   //以定義常量的形式定義數(shù)據(jù)庫連接信息咐扭,
    define('HOST','127.0.0.1');
    define('USERNAME', 'root');
    define("PASSWORD", 'root');
    // 連接mysql,有錯就打印錯誤
    if(!($con=mysqli_connect('127.0.0.1','root','root'))){
        echo mysqli_error($con);
        die("連接MySQL出錯");
    }
    // 選擇數(shù)據(jù)庫也可以直接寫在connect方法的第四個參數(shù)里
    if(!mysqli_select_db($con,'test')){
        echo mysqli_error($con);
        die("選擇database出錯");
    }
    // 設置編碼,防止亂碼
    if(!mysqli_query($con,'set names utf8')){
        echo mysqli_error($con);
        die("設置編碼出錯");

    }

    // 創(chuàng)建表test
    $sql=<<<EOF
         CREATE TABLE IF NOT EXISTS test_table(
         id TINYINT UNSIGNED AUTO_INCREMENT KEY,
         username VARCHAR(20) NOT NULL,
         password VARCHAR(20) NOT NULL
         );
EOF;
    if(mysqli_query($con,$sql)){
        $query=mysqli_query($con,"SELECT * FROM test_table");
        if($query&&mysqli_num_rows($query)==0){
            $sql="INSERT test_table(username,password)VALUES('zhang','123'),('li','456')";
            mysqli_query($con,$sql);
        }
    }else{
        echo mysqli_error($con);
        die("創(chuàng)建表出錯");
    }


    $sql_1="SELECT * FROM test_table";
    echo '<h4>mysqli面向過程使用方法</h4>';
    echo '<h4>這里只是舉了部分常用方法蝗肪,還有很多請自行看視頻或相關手冊</h4>';
    echo'<h4>以下都是獲取查詢數(shù)據(jù)的第一條袜爪,如果要獲取全部的可以使用循環(huán)語句打印出來</h4>';
    echo'<h4>在這里,$con是連接標識符薛闪,$query是執(zhí)行的結(jié)果集</h4>';
    echo'<hr>';
    // mysqli_query執(zhí)行sql語句辛馆,第一個參數(shù)是mysql連接,第二個參數(shù)是sql語句
    $query=mysqli_query($con,$sql_1);//執(zhí)行sql語句豁延,將執(zhí)行結(jié)果賦給一個變量
    if($query){
        echo 'mysqli_fetch_row($query):以索引數(shù)組的形式獲取數(shù)據(jù)(這個循環(huán)打印了)<br><br>';
        //循環(huán)打印
        while ($result=mysqli_fetch_row($query)) {
            echo 'name:'.$result[0].' '.'password:'.$result[1].'<br>';
            $data[]=$result;
        }
        print_r($data);
        echo '<hr>';
    }
    $query=mysqli_query($con,$sql_1);
    if($query){
        echo 'mysqli_fetch_assoc($query):以關聯(lián)數(shù)組的形式獲取數(shù)據(jù)<br><br>';
        $result=mysqli_fetch_assoc($query);
        print_r($result);
        echo '<hr>';
    }
    $query=mysqli_query($con,$sql_1);
    if($query){
        echo 'mysqli_fetch_array($query,MYSQLI_BOTH):第二個參數(shù)不寫就是默認以混合數(shù)組(索引數(shù)組昙篙、關聯(lián)數(shù)組)的形式獲取數(shù)據(jù)<br><br>';
        $result=mysqli_fetch_array($query,MYSQLI_BOTH);//以混合數(shù)組形式第二個參數(shù)可寫可不寫
        print_r($result);
        echo '<hr>';
    }
    $query=mysqli_query($con,$sql_1);
    if($query){
        echo 'mysqli_fetch_array($query,MYSQLI_NUM):以索引數(shù)組的形式獲取數(shù)據(jù),等同于mysqli_fetch_row<br><br>';
        $result=mysqli_fetch_array($query,MYSQLI_NUM);
        print_r($result);
        echo '<hr>';
    }
    $query=mysqli_query($con,$sql_1);
    if($query){
        echo 'mysqli_fetch_array($query,MYSQLI_NUM):以關聯(lián)數(shù)組的形式獲取數(shù)據(jù)诱咏,等同于mysqli_fetch_assoc<br><br>';
        $result=mysqli_fetch_array($query,MYSQLI_ASSOC);
        print_r($result);
        echo '<hr>';
    }
    $query=mysqli_query($con,$sql_1);
    if($query){
        echo 'mysqli_num_rows:獲取結(jié)果數(shù)目<br><br>';
        $result=mysqli_num_rows($query);
        print_r($result);
        echo '<hr>';
    }
    $query=mysqli_query($con,$sql_1);
    if($query){
        echo 'mysqli_fetch_object:以對象形式獲取數(shù)據(jù)<br><br>';
        $result=mysqli_fetch_object($query);
        print_r($result);
        echo"<br>";
        
        echo $result->id;
        echo '<br>';
        echo $result->username.'<br>';
        echo $result->password.'<br>';
        echo '<hr>';
    }
echo"<h4>以下選擇性看</h4>";
echo 'mysqli_multi_query:執(zhí)行多條sql語句,注意每句結(jié)束的“;”<br><br>';
$sql="INSERT test_table(username,password)VALUES('wang','789'),('hao','101112');";
$sql.="UPDATE test_table SET password='11111111';";
// if(mysqli_multi_query($con,$sql)){
//  echo 'multi success';
// };
// 
$sql2="SELECT * FROM test_table where id=1;";
$sql2.="SELECT * FROM test_table where id=2";
if(mysqli_multi_query($con,$sql2)){
    $rows=array();
    echo "success<br>";
    do{
        if($result=mysqli_store_result($con)){
            $rows[]=mysqli_fetch_all($result,MYSQLI_ASSOC);
        }
    }while(mysqli_more_results($con)&&mysqli_next_result($con));
}else{
        echo mysqli_error($con);
}
print_r($rows);
//關閉連接
mysqli_close($con);
echo"<h4>預處理和事務處理暫時不需要掌握苔可,請以后自己看視頻或者以后有機會講</h4>";

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市袋狞,隨后出現(xiàn)的幾起案子焚辅,更是在濱河造成了極大的恐慌,老刑警劉巖苟鸯,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件同蜻,死亡現(xiàn)場離奇詭異,居然都是意外死亡倔毙,警方通過查閱死者的電腦和手機埃仪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陕赃,“玉大人卵蛉,你說我怎么就攤上這事∶纯猓” “怎么了傻丝?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诉儒。 經(jīng)常有香客問我葡缰,道長,這世上最難降的妖魔是什么忱反? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任泛释,我火速辦了婚禮,結(jié)果婚禮上温算,老公的妹妹穿的比我還像新娘怜校。我一直安慰自己,他們只是感情好注竿,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布茄茁。 她就那樣靜靜地躺著魂贬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裙顽。 梳的紋絲不亂的頭發(fā)上付燥,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音愈犹,去河邊找鬼键科。 笑死,一個胖子當著我的面吹牛漩怎,可吹牛的內(nèi)容都是我干的萝嘁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼扬卷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了酸钦?” 一聲冷哼從身側(cè)響起怪得,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卑硫,沒想到半個月后徒恋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡欢伏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年入挣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硝拧。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡径筏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出障陶,到底是詐尸還是另有隱情滋恬,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布抱究,位于F島的核電站恢氯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鼓寺。R本人自食惡果不足惜勋拟,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望妈候。 院中可真熱鬧敢靡,春花似錦、人聲如沸州丹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吓揪,卻和暖如春亲怠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柠辞。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工团秽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叭首。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓习勤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焙格。 傳聞我的和親對象是個殘疾皇子图毕,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,004評論 6 13
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法眷唉,內(nèi)部類的語法予颤,繼承相關的語法,異常的語法冬阳,線程的語...
    子非魚_t_閱讀 31,662評論 18 399
  • 從三月份找實習到現(xiàn)在蛤虐,面了一些公司,掛了不少肝陪,但最終還是拿到小米驳庭、百度、阿里氯窍、京東饲常、新浪、CVTE荞驴、樂視家的研發(fā)崗...
    時芥藍閱讀 42,274評論 11 349
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,283評論 25 707
  • 今天不皆,我對實體經(jīng)濟和虛擬經(jīng)濟又有了些新的認識。以前我總喜歡把實體經(jīng)濟和虛擬經(jīng)濟的關系理解為人的肉體和精神的關系...
    breastli閱讀 700評論 1 0