• 大前端涉猎之前后端交互总结2:使用PHP进行表单数据上传与更新


    1:使用PHP进行表单上传

    1.1 form表单的数据收集

    HTML页面:

     

    代码解释:核心模块是form的属性:

    --提交方式 :  method="post"
    --指定 name 属性:  例如 name="username"
    -- 给 form 指定文件上传格式:  enctype="multipart/form-data"
     
     
    2点击提交按钮后,后台进行的操作

    2.1 通过$_FILES 超全局变量,获取图像数据:

      二维数组,可以获取表单上传的提交数据内容.

      Array
      (
          [photo] => Array
              (
                  [name] => picture.jpg   提交的文件名
                  [type] => image/jpeg     文件类型
                  [tmp_name] => C:UsersJepsonAppDataLocalTempphpBF97.tmp  临时存储的路径
                  [error] => 0    错误码, 如果是 0 表示没有错误
                  [size] => 17552  文件大小, 单位 字节 17kb 左右
              )
      )

     

     

    2.2 PHP的图像转存:  // 1 获取文件数组

      $file = $_FILES['photo'];
    
      if ( $file['error'] === 0 ) { // 2 需要转存文件
    
        $ftmp = $file['tmp_name']; // 3 获取临时文件路径
    
        // 4 截取后缀名
        $name = $file['name']; 
        $ext = strrchr( $name, "." ); 
    
        // 5 随机生成文件名
        $newName = time().rand(10000, 99999).$ext;
    
    
        // 6 转存文件
        move_uploaded_file( $ftmp, "./upload/".$newName );
    }

     

    2.3 通过$_POST超全局变量获取post数据,保存在全局变量里.

     $username = $_POST['username'];
      $nickname = $_POST['nickname'];
      $age = $_POST['age'];
      $tel = $_POST['tel'];
      $sex = $_POST['sex'];
      $class = $_POST['class'];
      $photo = ""; // 图片地址

     

    2.4 准备SQL语句,进行数据库写入操作:插入数据

     $sql = "insert into stu (name, nickname, age, tel, sex, photo, classid)
              values ('$username', '$nickname', $age, '$tel', '$sex', '$photo', $class)";

    2.5 判断是否插入成功,并进行跳转操作

    //封装执行数据库的方法
    function my_exec( $sql ) {
        // 1. 连接数据库
        $link = @ mysqli_connect( '127.0.0.1', 'root', 'root', 'stumanage', '3306' );
    
        if ( !$link ) {
          echo "数据库连接失败";
          return false;
    
    //2 . 执行 sql, 执行的是 查询, 成功:结果集, 失败:false
        $res = mysqli_query( $link, $sql );
    
        if ( !$res ) {  // 失败了
          echo mysqli_error( $link ); // 打印错误信息
    
          mysqli_close( $link );
          return false;
        }
        }
    
    //执行数据库语句
    if ( my_exec( $sql ) ) {
        echo "添加成功";
        // 跳转到 学生列表php文件
        header('location:studentList.php');
      }
      else {
        echo "添加失败";
      }

     

    2.6  更新数据库

      
    //获得数据的唯一标识
    $id = $_GET['id'];
    
    //准备查询语句
    $sql = "select * from stu where id = $id";   // 准备 sql 语句
    
    //执行查询语句
    $res = mysqli_query( $link, $sql );

    PHP方法注解:

      1 mysqli_connect( '127.0.0.1', 'root', 'root', 'stumanage', '3306' ); PHP链接指定数据库的方法.

       2 mysqli_close( $link ); 数据库使用完毕后,关闭数据库链接的方法,不能省略.

       3 mysqli_query( $link, $sql ); 执行 sql, 执行的是查询, 成功输出结果集, 失败返回false.

       4 mysqli_error( $link ); php打印错误信息的方法

       5 header("location: studentList.php"); php跳转到指php文件的方法.

  • 相关阅读:
    Javascript的作用域、作用域链以及闭包
    C#当中的泛型和java中的对比
    MongoDB的主从复制和副本集
    MongoDB启动配置等
    JavaScript学习系列1 基础-变量
    Umbraco项目发布错误 --More than one type want to be a model for content type authorize
    项目中gulp使用发生的错误及解决
    JavaScript学习系列2一JavaScript中的变量作用域
    ASP.NET MVC中的ActionFilter介绍学习
    Razor中的 内容标记块语法
  • 原文地址:https://www.cnblogs.com/autoXingJY/p/9139427.html
Copyright © 2020-2023  润新知