【千紙詩書】—— PHP/MySQL二手書網站後臺開發之基礎知識

前言: 在具體回顧每個功能的實現前,仍是有必要先溫習一些項目涉及到的PHP、MySQL【語法基礎】。項目github地址:https://github.com/66Web/php_book_store,歡迎Star。javascript


1、PHP基礎語法php

  • 一個PHP程序混合代碼 html + css + js + php
  • PHP標記:XML標記風格
    <?php
       echo "Hello world";
    ?>
  • 輸出語句:echo語句,每條語句後都須要加分號「」結束css

    <?php
       echo "歡迎","學習PHP"
    ?>
  • 註釋語句html

    ①   /* 開始                    多行註釋
              ……  */結束        
    ②   //                        單行註釋
    ③   #                         單行註釋
  • 變量-命名與賦值:java

  1. 變量名必須以‘$’符號開頭mysql

    $bookname = 'PHP程序設計'
  2. 變量名的第一個字符必須是字母或下劃線,後面能夠是字母、數字或者下劃線組合git

  3. 變量名嚴格區分大小寫,若是兩個變量只是大小寫不一樣,被視爲兩個變量github

  4. 一般命名變量、賦值一塊兒進行ajax

    $_price = 36
  • 變量-數據類型:PHP支持8種數據類型,包括——4種標量類型、2種複合類型、2種特殊類型sql

    數據類型轉換:自動轉換 VS 強制轉換

  1. " + ":會將字符轉換成數值

  2. .  ":會將數字轉換成字符

  3. 使用單引號:程序不會判斷字符串中是否含有變量,會將所有內容當作字符串輸出

  4. 使用雙引號:會首先判斷字符串中是否含有變量,若是有變量會直接輸出變量的值

  • PHP轉義字符

    \"   雙引號           \\    反斜槓          \n     換行
    \r   回車             \t    製表符          \$     美圓符號
    \x  十六進位字符
  • 常量

  1. 系統預約義常量

    PHP_VERSION       PHP程序的版本
  2. 自定義常量:經過define()函數定義,不能經過賦值語句賦值

    ①  常量的值只能是標量
       <標量類型是數據結構種最基本的單元, 同一時刻只能存儲一個數據>
    ② 常量前面沒有 $ 符號 <?php define("COPYRIGHT", "Copyright © 2011, www.bvtc.com.cn"); echo COPYRIGHT; ?>
  • 算術運算符:7個  

    +    加法運算符        -    減法運算符       *    乘法運算符
    /     除法運算符       %   取餘數運算符      ++   自加運算符   
    --    自減運算符        
    
    echo $init_a ++;
  • 字符串運算符  

      :將兩個字符串鏈接起來保存到一個新的字符串中

    <?php
        $str_var1 = "城市,";
        $str_var2 = "讓生活更美好!";
        echo  $str_var1 .   $str_var2;  //實現字符串的鏈接    「城市,讓生活更美好!」
    ?>
  • 賦值運算符  

    =  :  「被賦值爲」或「被設置爲」,不是等於  

  • 複合賦值運算符:對一個變量進行運算,而後將運算結果賦值給原來的變量  

    +=     -=     *=      /=     %=     . =  (將左邊的字符串鏈接到右邊)

    $a .= $b   =>    $a = $a . $b
  • 位運算符:將一個整型變量當作一系列的位(bit)來處理

    &      與      |       或        ^      異或
    
    <<   左移       >>     右移       ~      取反
  • 比較運算符:經過比較兩個數據的大小來返回真值或假值(一般用在 條件判斷 和  循環處理中)  

    <   小於        >   大於          ==  等於         ===  恆等於(值與數據類型)
    
    <=   小於等於    >=  大於等於      !=   不等        !==   不等於
  • 邏輯運算符  

    &&   與        ||    或       !   非        xor    異或(一個爲真時返回真;兩個同樣時,爲假)

  • 三元運算符  

    ?  :   與if條件語句做用相同

  • 其它運算符  

     $    變量定義       &    變量地址       @    屏蔽錯誤信息        引用對象方法或屬性           

  • 條件結構:if語句、switch語句
  • 循環結構:while語句、do-while循環、for循環、foreach
  • 函數-內置函數:工具函數、數學函數
  1. time():返回當前系統時間,以秒s爲單位的整數
  2. die()exit():指向同一個函數,使程序終止,die函數沒有返回值
    <?php
        $var = "圖書商城"
        echo   $var;
        die("程序終止");    //圖書商城程序終止
        echo  "該語句不會被執行";
    ?>
  3. empty():用於檢查變量是否爲0 或者 空值,如爲0 或 空值 返回true, 不然false

  4. is_bool():用於檢測某變量是不是布爾值

  5. abs():返回給定數值表達式的絕對值

    <?php
        echo  abs(-1);   //1
    ?>
  6. ceil():上取整,返回大於參數的最小的整數

    <?php
        echo  ceil(1.1);     //2
        echo  ceil(-1.1);    //-1
    ?>
  7. floor():下取整,返回小於參數的最大的整數

    <?php
       echo   floor(1.1);     //1
       echo   floor(-1.1);  //-2
    ?>
  8. round():返回四捨五入的結果數

  9. min():返回該數組中的最小值

  10. max():返回該數組中的最大值

  11. rand():返回一個隨機數

  • 函數-自定義函數 

  1. 經過function定義,直接使用函數名稱進行函數的調用

    <?php
        funtion fun_add($int_n){
            $int_sum = 0;
            for($int_i = 1;  $int_i <= $int_n;  $int_i++){
                $int_sum += $int_i;
            }
            echo   $int_sum;
        }
         
        fun_add(0);
    ?>
  2. 參數傳遞-值傳遞 

    值傳遞:參數在調用函數先後不會發生改變,傳遞給函數的只是該參數的值

  3. 參數傳遞-引用傳遞

    若是但願在函數內部修改參數值,且函數外部也能同時改變該參數的值,在傳遞的參數前面加 & 

    引用傳遞:將實參在內存的地址傳遞給相應的形參,形參的值發生改變的同時,實參也發生改變

    <?php
       function  change(&number){
           $number = $number * 2;
           echo  '函數內部  $number = ' . $number;
       }
       $number = 10  //實參
       change(&number);
       echo '<p>函數外部$number=' . $number . '</p>';
    ?>
  • 數組

  1. 建立空數組,並添值   => 給數組元素賦值

    $list = [];
    $list[] = ["bid" => 101,  "title" => "西遊記"];
    $list[] = ["bid" => 102 , "title" => "西遊記前傳"];
    $list[] = ["bid" => 103,  "title" => "西遊記後轉"];
  2. 關聯數組

    $arr = ["eid" => 102,  "ename" => "james"];
  3. 遍歷數組   與js不一樣

    //PHP  $arr沒有 .length屬性  -> count($arr)
    
    for($i = 0; $i < count($arr2); $i++){
        echo  $arr2[$i];
    }

    更簡單的  foreach

    foreach($arr2 as $k => $v){
        echo  "$k = $v<br/>";     //雙引號直接把變量輸出
    }

    *注意:  php5.3-   =>   $arr1 = array(10, 20, 30);

                      php5.4+  =>   $arr2 = [10, 20, 30];

  • PHP參數傳遞:3種方式
  1. 地址欄直接輸入 <測試>
    x.php -> $uname = $_REQUEST["uname"];
    
    http://127.0.0.1/x.php?uname=tom&age=10
  2. 表單的name屬性傳遞

    x.php -> $uname = $_REQUST["uname"];
    html  ↓
    
    <form action="x.php"  method="post">
         <input  type="text"  name="uname"/>
         <input  type="submit"  value="ok" />
    </form>
  3. 經過js自動傳遞

    <script>
        location.href = "x.php?uname=tom"
    </script>

    <a>的href跳轉連接帶參數傳遞

    <a href="x.php?uname=tom"></a>
  • PHP表單處理

    PHP中使用全局變量 $_GET$_POST 來接收表單中提交的數據

    在PHP程序的任何部分均可以調用這些全局變量

    <form  action=" "   method="post" >
        用戶名:<input type="text"  name="username" /><br/>
        密碼:  <input type="text"  name="paw"/></br>
        <input type="submit"  name="submit"  value="提交"/>
        <input type="reset"  name="reset"  value="重置"/>
    </form>

  1. 經過 $_POST接收

    <?php                    
       echo  "用戶名:" . $POST['username'];   //輸出以POST方法提交的用戶名   對應input框的name名(惟一)
       echo  "<br/>";        
       echo  "密碼爲:" . $POST['paw'];  //輸出POST方法提交的密碼
    ?>
  2. 經過 $_GET接收

    <?php                    
       echo  "用戶名:" . $_GET['username'];   //輸出以GET方法提交的用戶名   對應input框的name名(惟一)
       echo  "<br/>";        
       echo  "密碼爲:" . $_GET['paw'];  //輸出GET方法提交的密碼
    ?>

 

2、MySQL基礎語法  

  • MySQL語句分類 
  1. DDL   數據定義語句   CREATE / DROP
  2. DML          操做          INSERT / DELETE / UPDATE 
  3. DQL          查詢          SELECT
  4. DCL          控制         (GRANT /  REVOKE) — 瞭解
  • 進入mysql系統
    mysql  -uroot -p
  • DDL數據定義:CREATE  建立庫 / 建立表 (2種)

    ①  CREATE    DATABASE   庫名    CHARSET = UTF8;
    
    ②  CREATE    TABLE     表名(
                  列名1    列類型,
                  ……       ……
        );
  • DML操做數據:插入 - 更新 - 刪除 (3種)
    ①   INSERT   INTO   表名   VALUES(值1, 值2, ……);
    
    ②   UPDATE   表名   SET   列1 = 新值1, 列2 = 新值2
         WHERE   條件;
    
    ③   DELETE  FROM  表名  WHERE  條件;
  • DQL查詢數據

    ①  SELECT * FROM 表名;     //查詢全部列
    
    ②  SELECT  列名1, 列名2 ……  FROM  表名
        WHERE  條件;  //多條件用 AND / OR / NOT
        ORDER  BY  列名稱;  //依照**排序,默認升序     降序後跟DESC
  • DROP刪除 

    刪除指定庫,指定表    很難恢復,通常不操做

  • 數據庫相關指令
    LISE   庫名;    //進入數據庫
    
    SHOW   DATABASES;    //查看全部數據庫
  • 列數據類型 

  1. int   整型     範圍(-21億~21億)
  2. varchar(n)    字符串   n:幾個字符(字母,數字,漢字,特殊字符)
    phone     (int放不下)
    upwd       密碼
    jpg/pic    也是字符串類型  —  「1.jpg」
  3. double(n,m)    浮點數(小數)   double(10,2) -> 總長度10位,其中包括2位小數

  4. datetime    日期時間   ‘1997-11-20’

  5. decima(n,m)   高精度的浮點數    eg:Salary   工資

  • 查詢多張表的步驟
  1. Select    查找[別名.值]
  2. From      後給表起別名(一個字母)   空格
  3. WHERE    後面加兩表間關係
    SELECT  e.eid,  e.salary,  d.dname
    FROM  dept  d,  emp  e
    WHERE  e.did  =  d.did
  • 查詢能夠嵌套

    SELECT  *  FROM   emp;
    WHERE  did = (SELECT did FROM dept WHERE dname='市場部');
    //did 是兩表聯繫 -> 查找條件,再查找
  • 精確查詢

    SELECT   列名   FROM   表名    WHERE   did = 3;
    SELECT   列名   FROM   表名    WHERE   name = '雞蛋';
  • 模糊查詢  

    SELECT    列名    FROM    表名    WHERE    列名    LIKE    '%關鍵字%';   包括關鍵字  

                                                                                                   '關鍵字%';  以關鍵字開頭  

                                                                                                 '%關鍵字';  以關鍵字結尾

                                                                                                                  匹配單個字符

  • 分頁查詢

    SELECT    列名   FROM   表名   LIMIT   起始行, 行數

  • 同時更新不一樣條件的多條指令爲相同數值

         UPDATE    car    SET    tid = 2    WHERE    cid    in    (3,5,7,9); 

  • UTF-8編碼
  1. mysql    utf8
    CREATE   DATABASE   庫名    CHARSET = UTF8;  //UTF8 支持全世界語言
    SET   NAMES   GBK;   //GBK 國家標準
  2. html;css;  js;  php     utf-8

    <?php
        header(*Content-Type: application/json;   charset:utf-8");
        $conn = mysqli_connect("127.0.0.1", "root", " ", "weixin", 3306);
        mysqli_query($conn, "SET  NAMES  UTF8");
    ?>
  • 習慣
  1. 指令大寫,表名-自定義   小寫     易區分,易修改
  2. 部署服務器,嚴格區分大小寫 (如Linux)
  • 使用安裝MySQL和php都須要設置環境變量
    Add   to   path
    C:\xampp\mysql\bin
    C:\xampp\apache\bin
  • MySql必須加 主鍵自增加(速度快)  

    id     INT     PRIMARY      KEY     AUTO_INCREMENT
  • MySql經常使用函數(6個) 
  1. 當前日期和時間                       now()
  2. 獲取當前列中        最大值        max(列)
  3.                               最小值        min(列)
  4.                               全部數值和           sum(列)
  5.                               全部數值平均值    avg(列)
  6.                               記錄個數               count(列)
    SELECT   max(sal),   min(sal),   avg(sal),   sum(sal),   count(sal)
    FROM   emp;
  • MySql完整建立用戶表

    mysql    -uroot    -p
    
    CREATE    DATABASE   weixin    CHARSET=UTF8
    USE     weixin;
    
    #用戶表
    CREATE    TABLE     wxuser(
         uid    INT    PRIMARY   KEY   AUTO_INCREMENT,
         uname  VARCHAR(30),
         upwd   VARCHAR(30)
    );
    SET   NAMES   GBK;
    
    INSERT   INTO   wxuser   VALUES(null,  '17712345678', '123456');
    SELECT  *  FROM  wxuser;

 

3、Ajax基礎知識  

  • Ajax接收服務器返回不一樣格式的數據(5種  請求主體類型描述頭Content-Type)
    text/plain     純文本
    text/html     文本與網頁
    application/javascript   JS代碼
    application/json         json格式數據
    application/xml          xml格式數據
  1. txt  純文本

    //PHP中:修改響應頭中數據格式
    header("Content-Type:text/plain;  charset:utf-8");
    echo  "hello";
    //ajax中:
    xhr.responseText;
    //js文件時:
    eval(xhr.respnseText)  
  2. json 格式數據

    //PHP中:修改響應頭中數據格式
    header("Content-Type:application/json;  charset:utf-8");
    echo  "json_encode($row)";
    //ajax中
    xhr.responseText;  
  3. 萬能的Ajax封裝函數$.ajax() —— jQuery中

    $.ajax({
         type:  'GET',                          //請求方式   GET/POST
          url:  'data/login_do.php',            //請求程序地址(必選)
         data:  {uname:u,  upwd:p},             //提交給服務器參數, 一個key,一個value
         success: function(data){               //響應完成而且成功調用函數
              var  rs  = parseInt(data);
              if(rs<0){
                 $("p.alert").html("用戶名或密碼錯誤")
              }else{
                 $(".model").hide();
              }
        },
        error: function(){                     //響應完成而且失敗調用函數
        }
    });
    
    //beforeSend:fn   ——  請求消息發送以前調用函數
    //complet:fn ——  響應完成後不管成敗調用函數

注:轉載請註明出處

相關文章
相關標籤/搜索