美文网首页
MySQL—day4(php)

MySQL—day4(php)

作者: 致自己_cb38 | 来源:发表于2019-04-25 20:55 被阅读0次

    一、 MySQL天龙八部

    1.连接数据库

    mysqli_connect(主机,用户名,密码)
    @:不显示系统错误
    $link = @mysqli_connect('localhost','root','');
    

    2.判断是否连接成功

    一般只是处理出现错误的情况。如果错误处理完成之后继续向后。

    mysqli_connect_error()
    mysqli_connect_errno()
    
    if($link===false){
        echo mysqli_connect_error($link);
        echo mysqli_connect_errno($link);
        die;
    }
    

    3.选择数据库

    mysqli_select_db()
    mysqli_error()
    mysqli_errno()
    
    $res = mysqli_select_db($link,'xmr');
    if($res===false){
        echo mysqli_error($link);
        echo mysqli_errno($link);
        die;
    }
    

    4.设置字符集

    mysqli_set_charset()
    
    $res = mysqli_set_charset($link,'utf8');
    if($res===false){
        echo mysqli_error($link);
        echo mysqli_errno($link);
        die;
    }
    

    5.准备SQL语句

    $sql = 'select * from student;';
    

    6.执行SQL

    mysqli_query();
    
    $res = mysqli_query($link,$sql);
    if($res===false){
        echo mysqli_error($link);
        echo mysqli_errno($link);
        die;
    }
    

    7.处理结果集

    从结果集中取得行,一条条获取
    mysqli_fetch_row()
    
    从结果集中取得一行作为数字数组或关联数组
    mysqli_fetch_array()
    // 数字数组
    $row=mysqli_fetch_array($result,MYSQLI_NUM);
    // 关联数组
    $row=mysqli_fetch_array($result,MYSQLI_ASSOC);
    
    从结果集中取得一行作为关联数组
    mysqli_fetch_assoc()
    
    从结果集中取得所有行作为关联数组
    mysqli_fetch_all()
    // 获取数据 
    mysqli_fetch_all($result,MYSQLI_ASSOC);
    
    假设 websites 表有一个自动生成的 ID 字段。返回最后一次查询中的 ID
    mysqli_insert_id()
    
    从不同的查询中输出所影响记录行数
    mysqli_affected_rows()
    

    8.释放资源关闭数据库连接

    mysqli_free_result()
    
    mysqli_close();
    

    二、 代码重用的办法

    1.代码包含

    将基础代码比如连接,选择数据库,设置字符集写在一个文件中,需要使用的地方直接引用进来。

    1) 添加数据

    先创建一个文章数据表:

    image.png
    CREATE TABLE `article` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `title` varchar(255) NOT NULL COMMENT '文章的标题',
      `content` text NOT NULL COMMENT '文字的内容',
      `user_name` varchar(30) NOT NULL COMMENT '用户名',
      `add_time` datetime NOT NULL COMMENT '添加时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    创建前端页面:

    image.png

    设计后端的逻辑处理:

    image.png

    2) 查看发表的文章

    image.png

    3) 文章列表

    image.png

    4) 文章的删除

    image.png

    2.函数封装

    1) 数据连接函数

    需要做什么: 连接数据 设置字符集 选择数据库

    返回: 连接的资源

    函数的参数: 主机 端口 用户名 密码 字符集 数据库

    默认值: 端口 字符集 默认值一般设计在函数的最后

    /*
    *@desc 数据库连接函数
    *@param $host string 数据库的主机地址
    *@param $user string 数据库的用户名
    *@param $pass string 数据库的密码
    *@param $db_name string 数据库的数据库名称
    *@param $port int 数据库的端口 默认3306
    *@param $charset string 字符集 默认utf8
    *@return false | $link  bool|object 连接失败|连接的资源
    */
    function db_connect($host,$user,$pass,$db_name,$port=3306,$charset='utf8'){
        global $error;
        global $errno;
        
        //判断端口是否默认
        if($port!=3306){
            $host = $host . ':' . $port;
        }
        //1. 连接数据库
        $link = @mysqli_connect($host,$user,$pass);
        
        //2. 判断是否连接成功
        if($link===false){
            $error =  mysqli_connect_error($link);
            $errno =  mysqli_connect_errno($link);
            return false;
        }
        
        //3. 选择数据库
        $res = mysqli_select_db($link,$db_name);
        if($res===false){
            $error =  mysqli_error($link);
            $errno =  mysqli_errno($link);
            return false;
        }
        
        //4. 设置字符集
        $res = mysqli_set_charset($link,$charset);
        if($res===false){
            $error =  mysqli_error($link);
            $errno =  mysqli_errno($link);
            return false;
        }
        
        return $link;
    }
    

    2) 错误处理函数

    /*
    *@desc 获取错误信息
    *@return array 错误信息数组
    */
    function get_error(){
        global $error;
        global $errno;
        global $debug;
        if($debug){
           return [
               'error' => $error,
               'errno' => $errno
           ];
        }
    }
    

    3) 插入函数

    /*
    * @desc db_insert 数据库插入操作
    * @param Slink object 数据库的连接资源
    * @param Stable string 数据表
    * @param $data array 要插入的数据
    * @param $get_ id bool 是否需要返回插入行的ID
    * @return bool/int bool 表示是否插入成功,int表示插入行的ID
    */
    function db_insert($link, $table, $data, $get_id=false) {
        global  $error;
        global $errno;
        if(!is_array($data)) {
            $error = ' 数据库数据的插入格式不合法,必须是数组格式' ;
            $errno = 1001;
        return false;
        }
        $data = parse_array($data) ;
        $fildes = implode(', ' ,array_keys($data)) ;
        $values = implode(', ' ,array_values($data)) ; 
        $sql = "insert into {$table} ({$fildes}) values ({$values}) ;";
        //执行SQL
        $rs = mysqli_query ($link, $sql) ;
        if($rs===false) {
            $error = 'sq1 语法错误';
            $errno = 1002;
            return false;
        }
        if($rs && mysqli_affected_rows($link)) {
            if($get_id) { 
                return mysqli_insert_id($link) ;
            }
            return true ;
        }
        $error = '插入的数据不匹配';
        $errno = 1003;
        return false;
    }
    

    9) 删除函数

    /*
    *@desc delete 数据库刪除操作
    *@param $link object 数据库连接资源
    *@param $table string 数据表
    *@param $where string 条件
    *@retuan bool true 表示刪除成功
    */
    function db_delete($link, $table, $where) {
        global $error;
        global $errno;
        if(!is_string ($where)) {
            $error = '刪除条件珸法不正碗,必須是字符串格式';
            $errno = 1004;
            return false;
        }
        $sql = "delete from {$table} where $where";
        $rs = mysqli_query ($link, $sql);
    
        if($rs=== false){
            $error = 'sql 语法错误';
            $errno = 1002;
            return false;
        }
    
        if($rs && mysqli_affected_rows($link)) {
            return true;
        }
        $error = ' 未找到刪除的数据';
        $errno = 1005;
        return false;
    }
    

    10) 更新函数

    /**
     *@desc 更新操作
     *@param $link object 连接状态
     *@param $table string 数据表
     *@param $set mixd 要修改的数据数组/字符串
     *@param $where string 更新条件
     */
    function db_update ($link, $table, $set, $where) {
        global $error;
        global $errno;
      
        if(!is_string($where)) {
            $error ='跟新条件语法不正确,必须是字符串格式';
            $errno = 1007;
            return false;
        }
        if(is_array($set)){
            $set = parse_array($set);
            $set = parset_set ($set);
        }
        //如果输入和字符串都不是的话,错误处理
        if(!is_string($set)){
            $error = '更新新语法错误';
            $errno = 1006;
            return false;
        }
        $sql = "update {$table} set {$set} where $where; ";
        $res = mysqli_query ($link, $sql) ;
        
        //判断语法是否错误
        if($res===false) {
            $error = 'sql 语法错误';
            $errno = 1002;
            return false;
        }
        //正确更新返回true
        if($res && mysqli_affected_rows($link)) { 
            return true ;
        }
        //没有跟新的内容
    
        return true;
    }
    

    12) 查询函数

    /*
    *@desc select 数据库查询操作
    *@param $fields string 数据库的字符段
    *@param $table string 结果集类型
    *@param $where string 条件
    *@param $group string 以字段进行分组
    *@param $having string 将执行$group后返回的结果再次进行过滤
    *@param $order string 排序
    *@param $limit string 限制条件
    *@retuan bool true 表示查询成功
    */
    function db_select($link, $fields, $table , $arr_type,$where=null, $group=null, $having=null, $order=null, $limit=null){
        if(is_string($table)){
            $table = $table;
        }else if(is_array($table)){
            $tables = implode(',',$table);
        }
        
        if(is_string($fields)) {
            $fields = $fields;
        }else if(is_array($fields)){
            $fields = implode(',',$fields);
        }
        
        $sql = "select {$fields} from {$table}";
        if($where){
            if(!is_string ($where)){
                $error = '刪除条件珸法不正碗,必須是字符串格式';
                $errno = 1004;
                return false;
            }
            $sql .= " where {$where}";
        }
    
        if ($group) {
            $sql .= " group by $group";
        }
        
        if($having) {
            $sql .= " having {$having}";
        }
        if($order){ 
            $sql .= " order by {$order}";
        }
        if($limit){
            $sql .= " limit {$limit}";
        }
    
        $res = mysqli_query($link, $sql);
    
        if($res && mysqli_num_rows($res)){
            return mysqli_fetch_all($res, $arr_type); 
        }
    
        return false;
    }
    

    三、创建php项目文件

    • pro
      • common:封装
      • lib:库
      • config:配置文件
      • upload:上传资源
      • api:接口返回
      • index:前端
      • admin:后端
      • static:静态文件
        • css
        • js
        • html

    相关文章

      网友评论

          本文标题:MySQL—day4(php)

          本文链接:https://www.haomeiwen.com/subject/svnogqtx.html