登录  /  注册
分页代码封装部分sql连接报错
phpcn_xinyu
phpcn_xinyu 2018-07-11 00:39:13
[Python讨论组]

老师,分页那部分,我提示Warning: mysqli::mysqli(): (HY000/1045): Access denied for user ''@'localhost' (using password: NO) in E:\yifeng\core\Db.php on line 19

connect failed:Access denied for user ''@'localhost' (using password: NO)

public static function pagination($table, $where = '', $page = 1, $pagesize = 10, $order = ''){
   $conn = self::db_connect();
   $totals = self::totals($table, $where);             // 总条数
   $totalpage = ceil($totals / $pagesize);      // 总页数
   $page = max(1, $page);                      // 当前页
   $offset = ($page - 1) * $pagesize;                  // 分页查询的开始位置
   // 拼接sql
   $sql = "select * from {$table}";
   if ($where) {
       $sql .= " WHERE ".$where;
   }
   if ($order) {
       $sql .= " ORDER BY " . $order;
   }
   $sql .= " limit ".$offset.','.$pagesize;
   $result = $conn->query($sql); // 执行sql
   if ($result->num_rows > 0) { // 返回数据的条数
       while ($row = $result->fetch_assoc()) { // 返回的一条条数据
           $rows[] = $row;
       }
       $result->free_result(); // 释放结果内存
   }
   $conn->close();
   return array(
       'total'         => $totals,
       'page'          => $page,
       'pagesize'      => $pagesize,
       'list'          => $rows
   );
}

phpcn_xinyu
phpcn_xinyu

全部回复(4)
Alone88

调用了两次db_connect, 一次是直接调用的db_connect , 第二次是total的,不知道为什么老师的没有出错,

一种办法, 在分页方法里面重新写一遍获取总数的方法赋值给变量

    /**
     * @param $table
     * @param $where
     * @param $page
     * @param $num
     * @param string $order
     * @return array
     */
    public static function pagination($table, $where, $page, $num, $order=''){
        $conn =self::db_connect();
        $count=0;
        $count_sql = "SELECT count(*) as count FROM {$table}";
        if($where){
            $count_sql .=" WHERE ".self::getwhere($where);
        }
//        exit($count_sql);
        if($count_result = $conn->query($count_sql)){
            $row = $count_result->fetch_assoc();
            $count = $row['count'];
        }
        $total_page = ceil($count/$num);//总页数
        $page=max(1,$page); // 处理$page,max(min,max) 返回最大数
        $offset = ($page-1)*$num;// 每页的起始数
        // 拼接查询的SQL
        $sql = "SELECT * FROM {$table}";
        if($where){
            $sql .=' WHERE '.self::getwhere($where);
        }
        if($order){
            $sql .= " ORDER BY {$order}";
        }
        $sql .=" LIMIT {$offset} , {$num}";
        $rows=[];
        if($result = $conn->query($sql)){
            while($row = $result->fetch_assoc()){
                $rows[]=$row;
            }
            mysqli_free_result($result);
        }
        $conn->close();
        return array('total'=>$count,'page'=>$page,'num'=>$num,'total_page'=>$total_page,'lists'=>$rows);
    }


  • 回复 主要是db_connect 导入数据库配置问题,第二次调用可能调用不出来,如果不掉用,直接在db_connect里面设置数据库配置就不会这样..
    Alone88 作者 2019-04-10 08:13:56
  • 回复 还可以把require_once 改成require
    Alone88 作者 2019-04-10 08:17:29
、馬

吞吞吐吐

无忌哥哥

数据库密码错了。

  • 回复 想想
    、馬 作者 2018-07-11 09:41:59
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号