zoukankan      html  css  js  c++  java
  • 【千纸诗书】—— 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 ——  响应完成后无论成败调用函数

    注:转载请注明出处

  • 相关阅读:
    CSS3—— 2D转换 3D转换 过渡 动画
    CSS3——边框 圆角 背景 渐变 文本效果
    CSS3——表单 计数器 网页布局 应用实例
    CSS3——提示工具 图片廓 图像透明 图像拼接技术 媒体类型 属性选择器
    CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
    CSS3——分组和嵌套 尺寸 display显示 position定位 overflow float浮动
    CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充
    Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
    数据库——单表查询
    数据库——添加,修改,删除
  • 原文地址:https://www.cnblogs.com/ljq66/p/10741967.html
Copyright © 2011-2022 走看看