• 头歌php mysql操作答案


    第1关:PHP对MySQL的基本操作
    /**
     * 初始化数据库连接
     */

    require 'public_function.php';
    //创建对象,连接数据库
    /*****begin*********/
    $link=new mysqli('127.0.0.1','root','123123');

    /*****end*********/

    //判断数据库连接是否成功,如果不成功则显示错误信息并终止脚本继续执行
    if($link->connect_error){
        die('连接数据库失败!'.$link->connect_error);
    }
    //设置字符集,选择数据库
    $link->query("drop database if exists 'educoder';");
    $link->query("create database educoder;");
    $link->query('set names utf8;');
    $link->query('use educoder;');

    //创建部门信息表
    /*****begin*********/
    $sql="create table emp_dept(
        d_id int unsigned primary key auto_increment,d_name varchar(20) not null) charset=utf8;";
    $link->query($sql);
    /*****end*********/
    //向部门信息表中插入数据
    /*****begin*********/
    $sql="INSERT INTO emp_dept VALUES 
         (1, '开发部'), (2, '媒体部'), (3, '人事部'),(4, '后勤部'), 
         (5, '市场部'),  (6, '运维部'), (7, '销售部');";
    $link->query($sql);
    /*****end*********/

    //修改用户表
    /*****begin*********/
    $sql="drop table if exists emp_info;";
    $link->query($sql);
     $sql="create table emp_info (
        e_id int unsigned primary key auto_increment, 
        e_name varchar(20) not null, 
        d_id int unsigned not null, 
        date_of_birth timestamp not null, 
        date_of_entry timestamp not null
        )charset=utf8;";
    $link->query($sql);

    /*****end*********/

    //向其中添加用户数据
    /*****begin*********/
    $sql="INSERT INTO emp_info VALUES
    (1, '小红', 1, '2015-4-9 17:51:00', '2015-4-9 17:52:00'), 
    (2, '李四', 5, '2008-4-3 13:33:00', '2013-10-24 17:53:00'), 
    (3, '王五', 4, '2008-4-3 13:33:00', '2015-4-21 13:33:00'), 
    (4, '赵六', 4, '2008-4-3 13:33:00', '2015-3-20 17:54:00'), 
    (5, '小兰', 2, '1989-5-4 17:33:00', '2012-6-18 17:54:00'), 
    (6, '小新', 5, '1993-9-18 17:36:00', '2015-2-28 17:36:00'), 
    (7, '小白', 2, '1991-10-17 17:37:00', '2014-8-16 17:37:00'), 
    (8, '小智', 7, '1987-6-20 17:37:00', '2015-1-10 17:38:00'), 
    (9, '大头', 6, '1991-2-14 08:49:00', '2014-7-12 08:49:00'), 
    (10, '小明', 3, '1991-2-14 08:49:00', '2015-3-4 09:10:00'), 
    (11, '小刘', 1, '1992-3-18 14:52:00', '2014-7-21 09:00:00');";
    $link->query($sql);

    /*****end*********/
    //左连接查询
    //填充下面sql语句
    $sql="select emp.e_id,emp.e_name,emp.date_of_birth,emp.date_of_entry,dept.d_name
          from emp_info as emp  
          left join emp_dept as dept
          on emp.d_id = dept.d_id;";

    $result=$link->query($sql);
    $db=new Init();
    $emp_info =$db->fetchAll($sql);
    //设置常量,用以判断视图页面是否由此页面加载
    define('APP', 'educoder');
    //加载视图页面,显示数据
    require 'list_html.php';

    第2关:PHP实现下拉菜单显示数据 上
    /**
     * 初始化数据库连接
     */

    Class Init
    {
        private $link;
        private static $host="127.0.0.1";
        private static $root="root";
        private static $password="123123";


        function __construct()
        {
            $this->link=new mysqli(self::$host,self::$root,self::$password);

            //判断数据库连接是否成功,如果不成功则显示错误信息并终止脚本继续执行
            if($this->link->connect_error){
                die('连接数据库失败!');
            }
            //设置字符集,选择数据库
            $this->link->query('set names utf8;');
            $this->link->query('use educoder;');
        }


        /**
         * 执行SQL的方法
         * @param string $sql 待执行的SQL
         * @return mixed 失败返回false,成功,如果是查询语句返回结果集,如果非查询类返回true
         */

        public function query($sql) {
           /***********Begin******/
          if ($result =$this->link->query($sql)) {
                return $result;
            }else{
                echo 'SQL执行失败:
    ';
                echo '错误的SQL为:',$sql,'
    ';
                echo '错误的代码为:',$this->link->connect_errno,'
    ';
                echo '错误的信息为:',$this->link->connect_error,'
    ';
                return false;
            }

            
            
            /*********end*******/
        }


        /**
         * 处理结果集中有多条数据的方法
         * @param string $sql 待执行的SQL
         * @return array 返回遍历结果集后的二维数组
         */
        public function fetchAll($sql) {

            if ($result =$this->link->query($sql)) {
                //执行成功
                //遍历结果集
                /***********Begin******/
             $rows=array();
            while($row=$result->fetch_assoc()){
                $rows[]=$row;
            }
            
            
            /*********end*******/
                //释放结果集资源
                $result->free();
                return $rows;

            } else {
                //执行失败
                return false;
            }
        }

        /**
         * 处理结果集中只有一条数据的方法
         * @param string $sql 待执行的SQL语句
         * @return array 返回结果集处理后的一维数组
         */
        public function fetchRow($sql) {
            //执行query()函数
            if ($result = $this->link->query($sql)) {
                //从结果集取得一次数据即可
               /***********Begin******/
             $row=$result->fetch_assoc();
            return $row;
            
            
            /*********end*******/
                
            } else {
                return false;
            }

        }

        /**
         * 对数据进行安全处理
         * @param string $data 待转义字符串
         * @return string 转义后的字符串
         */
        function safeHandle($data){
            //转义字符串中的HTML标签
            $data = htmlspecialchars($data);
            //转义字符串中的特殊字符
            $data = mysqli_real_escape_string($this->link,$data);
            return $data;
        }

    }

    //初始化数据库
    $db=new Init();

    //判断是否有表单提交
    if(!empty($_POST)){

        //声明变量$value,用来保存字段信息
        $fields = array('e_name','e_dept','date_of_birth','date_of_entry');

        //声明变量$value,用来保存值信息
        $value = array();

        //遍历$allow_field,获取输入员工数据的键和值
        foreach($fields as $k => $v){

            $data = isset($_POST[$v]) ? $_POST[$v] : '';

            if($data=='') die($v.'字段不能为空');

            $data =$db-> safeHandle($data);

            //把字段使用反引号包裹,赋值给$fields数组
            $fields[$k] = "`$v`";

            //把值使用单引号包裹,赋值给$values数组
            $values[] = "'$data'";
        }

        //将$fields数组以逗号连接,赋值给$fields,组成insert语句中的字段部分
        $fields = implode(',', $fields);

        //将$values数组以逗号连接,赋值给$values,组成insert语句中的值部分
        $values = implode(',', $values);

        //最后把$fields和$values拼接到insert语句中,注意要指定表名
        $sql = "insert into `emp_info` ($fields) values ($values)";

        //执行SQL
        if($res = $db->query($sql)){
            //成功时返回到 showList.php
            header('Location: ./showList.php');
            //停止脚本
            die;
        }else{
            //执行失败
            die('员工添加失败!');
        }
    }
    $sql = 'select * from emp_dept';
    //调用fetchAll()函数,执行SQL并进行数据处理,把处理后的部门数据赋值给$emp_dept
    $emp_dept = $db->fetchAll($sql);

    //没有表单提交时,显示员工添加页面
    define('APP', 'educoder');
    require 'add_html.php';
    第3关:PHP实现下拉菜单显示数据 下
    require "empUpdate.php";
    if(!defined('APP')) die('error!');
    ?>



       
        员工信息编辑
       
       
       
       
       



       

    修改员工信息


       

           
               
               
                   
               
               
               
           
    姓名:
    所属部门:
                       
                       
                         

                       
                       
                   
    出生年月:
    入职日期:

                       
                       
                   

       



  • 相关阅读:
    Spring MVC
    Jmeter 运行jmeter.bat报错errorLevel=1解决办法
    Sentinel源码剖析之核心组件作用和介绍
    vscode使用code runner乱码
    java(事务和批处理)
    工业生产中废酸回收技术的原理分析
    深度学习(4):Word2Vec 字&词向量的训练和使用
    `英语` 2022/8/15
    Vue3 setup中使用生命周期函数
    入门力扣自学笔记139 C++ (题目编号998)
  • 原文地址:https://blog.csdn.net/m0_62788719/article/details/127657538