美文网首页
PHP -- 数据库9 -- 数据库函数封装

PHP -- 数据库9 -- 数据库函数封装

作者: 潘肚饿兵哥哥 | 来源:发表于2019-09-25 22:25 被阅读0次

\color{rgba(254, 67, 101, .8)}{封装一个插入或更新数据提示是否成功的函数:}

$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());
    mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));

    function execute($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        if($result){
            return mysqli_affected_rows($link);//返回受影响的行数,返回值为0 或者大于0 的数,大于0可以当 真 来用
        }else{
            return false;
        }
        mysqli_close($link);
    }


    //增删改查
    $sql = "insert into student (number, name) values ('080404', '李雷')";
    //$sql = "update student set sex=0 where number='180403'";
    $ret = execute($sql);
    var_dump($ret);
    if($ret != false){//返回值不全等与false,$ret的返回值有0.所以要判断他和false的区别,只要不全等,就不相同
        if($ret == 0){
            echo '修改成功,没有修改任何内容';
        }else{
            echo '修改成功';
        }
    }else{
        echo '修改失败';
    }
    
image.png

\color{rgba(254, 67, 101, .8)}{封装查询多行数据函数:}

 $link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());
    mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));

    function execute($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        if($result){
            return mysqli_affected_rows($link);//返回受影响的行数,返回值为0 或者大于0 的数,大于0可以当 真 来用
        }else{
            return false;
        }
        mysqli_close($link);
    }


    function get_all($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        $list = mysqli_fetch_all($result, MYSQLI_ASSOC);
        //MYSQLI_ASSOC 获取关联下标
        //MYSQLI_both  两种下标都有
        //MYSQLI_NUM   获取数字下标

        mysqli_free_result($result);//释放资源  从结果集中取得行,然后释放结果内存
        return $list;
    }
    //查询
    $sql = "select goods_id, goods_name, shop_price, cat_id from goods where goods_id in(select max(goods_id) from goods group by cat_id)";
    $list = get_all($sql);

    echo '<pre>';
    print_r($list);
    echo '</pre>';
image.png

\color{rgba(254, 67, 101, .8)}{封装查询一行数据函数:}

$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());
    mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));

    function execute($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        if($result){
            return mysqli_affected_rows($link);//返回受影响的行数,返回值为0 或者大于0 的数,大于0可以当 真 来用
        }else{
            return false;
        }
        mysqli_close($link);
    }

    //查询多行数据
    function get_all($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        $list = mysqli_fetch_all($result, MYSQLI_ASSOC);
        //mysqli_fetch_all获取所有关联数据,查询多行数据的函数
        //MYSQLI_ASSOC 获取关联下标
        //MYSQLI_both  两种下标都有
        //MYSQLI_NUM   获取数字下标

        mysqli_free_result($result);//释放资源  从结果集中取得行,然后释放结果内存
        return $list;
    }

    //查询一行数据
    function get_row($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        $list = mysqli_fetch_assoc($result);
        //mysqli_fetch_assoc获取一行关联数据,查询一行数据的函数
        //只获取一行数据,就不需要用 MYSQLI_ASSOC 了,这样取出的结果不再是二维数组,而是一维数组

        mysqli_free_result($result);//释放资源  从结果集中取得行,然后释放结果内存
        return $list;
    }



    //查询
    $sql = "select goods_id, goods_name, shop_price from goods where goods_id=1 limit 1";//限制显示1条
    $list = get_row($sql);

    echo '<pre>';
    print_r($list);
    echo $list['goods_name'];//把商品名称输出来 这个$list是一个二维数组,0是第一个数组的下标
    echo '</pre>';
image.png

\color{rgba(254, 67, 101, .8)}{封装查询一个数据函数:}

$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());
    mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));

    function execute($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        if($result){
            return mysqli_affected_rows($link);//返回受影响的行数,返回值为0 或者大于0 的数,大于0可以当 真 来用
        }else{
            return false;
        }
        mysqli_close($link);
    }

    //查询多行数据
    function get_all($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        $list = mysqli_fetch_all($result, MYSQLI_ASSOC);
        //mysqli_fetch_all获取所有关联数据,查询多行数据的函数
        //MYSQLI_ASSOC 获取关联下标
        //MYSQLI_both  两种下标都有
        //MYSQLI_NUM   获取数字下标

        mysqli_free_result($result);//释放资源  从结果集中取得行,然后释放结果内存
        return $list;
    }

    //查询一行数据
    function get_row($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        $list = mysqli_fetch_assoc($result);
        //mysqli_fetch_assoc获取一行关联数据,查询一行数据的函数
        //只获取一行数据,就不需要用 MYSQLI_ASSOC 了,这样取出的结果不再是二维数组,而是一维数组

        mysqli_free_result($result);//释放资源  从结果集中取得行,然后释放结果内存
        return $list;
    }


    //查询一个数据
    function get_one($sql){
        global $link;
        $result = mysqli_query($link, $sql) or die(mysqli_error($link));
        $list = mysqli_fetch_row($result);
        mysqli_free_result($result);//释放资源  从结果集中取得行,然后释放结果内存
        return $list[0]; //因为只查一个数据,所以,用mysqli_fetch_row,获取数字下标
        //然后在这里直接拿这个下标,就可以得到数据了
        //因为这个数组就只有一个数据,所以下标就是0,
        //如果用 mysqli_fetch_assoc的话,拿到的数据是关联下标
        //这样如果查询的结果变更了,就全部涉及到这个关联下标的地方都要换,所以就不方便
        //这样用数字下标就无论查什么,下标都是0
    }



    //通过上面三个查询:查询多行、查询一行、查询一个数据
    //分别把mysqli_fetch_all、mysqli_fetch_assoc、mysqli_fetch_row都用了一遍



    //查询
    $sql = "select max(shop_price) from goods";//查询商品总数,total是别名
    $list = get_one($sql);

    echo '<pre>';
    print_r($list);
    echo '</pre>';
image.png

\color{rgba(254, 67, 101, .8)}{通过上面三个查询:查询多行、查询一行、查询一个数据}
\color{rgba(254, 67, 101, .8)}{把mysqli\_fetch\_all、mysqli\_fetch\_assoc、mysqli\_fetch\_row都用了一遍}


相关文章

网友评论

      本文标题:PHP -- 数据库9 -- 数据库函数封装

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