PHP语言之MySQL操作

第2关:PHP实现下拉菜单显示数据 上

<?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执行失败:<br>';
            echo '错误的SQL为:',$sql,'<br>';
            echo '错误的代码为:',$this->link->connect_errno,'<br>';
            echo '错误的信息为:',$this->link->connect_error,'<br>';
            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: .owList.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';

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下拉菜单可以使用HTML和Vue来实现,从数据库中调用数据可以使用后端技术(如PHP、Node.js等)来完成。 首先,在HTML中可以使用`<select>`标签来创建下拉菜单,例如: ```html <select> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> ``` 这里的`<option>`标签是下拉菜单的选项,`value`属性是选项的,`<select>`标签的`name`属性可以用来提交表单数据。 接着,我们可以使用Vue来动态生成选项。首先,在HTML中定义一个Vue实例: ```html <div id="app"> <select v-model="selected"> <option v-for="item in options" :value="item.id">{{ item.name }}</option> </select> </div> ``` 这里的`v-for`指令可以遍历`options`数组中的数据,`:value`和`{{ item.name }}`分别表示选项的和展示的文本。`v-model`指令可以绑定选中的到Vue实例的`selected`属性。 然后,在Vue实例中定义`options`数组,并从数据库中获取数据: ```javascript var app = new Vue({ el: '#app', data: { selected: '', options: [] }, mounted: function () { var self = this; axios.get('/api/options') .then(function (response) { self.options = response.data; }) .catch(function (error) { console.log(error); }); } }); ``` 这里使用了Axios库来发起HTTP请求,从`/api/options`接口获取数据,然后将数据给`options`数组。 最后,在后端代码中提供`/api/options`接口,从数据库中获取数据并返回JSON格式的数据即可。 这样就可以实现从数据库中获取数据并生成下拉菜单了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六弦绿漪。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值