• 【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识


    前言: 在具体回顾每一个功能的实现前,还是有必要先温习一些项目涉及到的PHP、MySQL【语法基础】。项目github地址:https://github.com/66Web/php_book_store,欢迎Star。


    一、PHP基础语法

    • 一个PHP程序混合代码 html + css + js + php
    • PHP标记:XML标记风格
      <?php
         echo "Hello world";
      ?>
    • 输出语句:echo语句,每条语句后都需要加分号“”结束

      <?php
         echo "欢迎","学习PHP"
      ?>
      
    • 注释语句

      ①   /* 开始                    多行注释
                ……  */结束        
      ②   //                        单行注释
      ③   #                         单行注释
      
    • 变量-命名与赋值:

    1. 变量名必须以‘$’符号开头

      $bookname = 'PHP程序设计'
    2. 变量名的第一个字符必须是字母或下划线,后面可以是字母、数字或者下划线组合

    3. 变量名严格区分大小写,如果两个变量只是大小写不同,被视为两个变量

    4. 通常命名变量、赋值一起进行

      $_price = 36
      
    • 变量-数据类型:PHP支持8种数据类型,包括——4种标量类型、2种复合类型、2种特殊类型

      数据类型转换:自动转换 VS 强制转换

    1. " + ":会将字符转换成数值

    2. .  ":会将数字转换成字符

    3. 使用单引号:程序不会判断字符串中是否含有变量,会将全部内容当做字符串输出

    4. 使用双引号:会首先判断字符串中是否含有变量,如果有变量会直接输出变量的值

    • PHP转义字符

      "   双引号           \    反斜杠          
           换行
      
         回车             	    制表符          $     美元符号
      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方法提交的密码
      ?>
      

    二、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:xamppmysqlin
      C:xamppapachein
    • 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;
      

    三、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 ——  响应完成后无论成败调用函数

    注:转载请注明出处

  • 相关阅读:
    正则表达式数据验证
    .NET开发工具
    (收藏)自己觉得好的学习网站 持续更新... ...
    MSSQL获取表结构通用方法
    第一阶段冲刺个人博客07
    第一阶段冲刺个人博客06
    第8周学习进度
    第一阶段冲刺个人博客05
    ”图书馆助手“典型用户和用户场景
    ”图书馆助手“典型用户和用户场景
  • 原文地址:https://www.cnblogs.com/ljq66/p/10741967.html
Copyright © 2020-2023  润新知