찾다

 >  Q&A  >  본문

페이지 매김 코드는 SQL 연결 오류의 일부를 캡슐화합니다.

선생님, 페이징 부분에 대해 경고: mysqli::mysqli(): (HY000/1045): 19행의 E:yifengcoreDb.php에서 ''@'localhost' 사용자(비밀번호 사용: NO)에 대한 액세스가 거부되었습니다.

연결 실패: ''@'localhost' 사용자에 대한 액세스가 거부되었습니다(비밀번호 사용: NO)

공용 정적 함수 페이지 매김($table, $where = '', $page = 1, $pagesize = 10, $order = ''){
$conn = self::db_connect();
$totals = self::totals($table, $where); // 총 항목 수
$totalpage = ceil($totals / $pagesize); // 총 페이지 수
$page = max(1, $page); $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) { //반환된 데이터 개수
                                                                    ;free_result() // 결과 메모리 해제
}
  $conn ->close();
    반환 배열(
                                                                                                              
'페이지 크기' =>

phpcn_xinyuphpcn_xinyu2363일 전1522

모든 응답(7)나는 대답할 것이다

  • Alone88

    Alone882019-04-09 22:14:21

    db_connect를 두 번 호출하는데, 하나는 db_connect를 직접 호출하고, 두 번째는 총합인데 왜 선생님이 실수를 안 했는지 모르겠네요,

    한 가지 방법은 페이징 방식에서 총 개수를 구하는 방법을 다시 작성하고 변수에 할당하세요

        /**
         * @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);
        }


    회신하다
    0
  • Alone88

    주요 문제는 db_connect가 데이터베이스 구성을 가져오며 두 번째 호출이 이를 호출하지 못할 수 있다는 것입니다. db_connect에서 직접 데이터베이스 구성을 설정하면 이 문제가 발생하지 않습니다.

    Alone88 · 2019-04-10 08:13:56
    Alone88

    require_once를 require로 변경할 수도 있습니다.

    Alone88 · 2019-04-10 08:17:29
  • 振远

    振远2018-12-25 19:28:19

    跟我的一样的问题
    공지: 정의되지 않은 변수: db in D:xuexicoredb.php 온라인 18

    공지: 정의되지 않은 변수: db in D:xuexicoredb.php 온라인 18

    공지: 정의되지 않은 변수: db in D :xuexicoredb.php 온라인 18

    주의: 정의되지 않은 변수: D:xuexicoredb.php 온라인 18

    경고: mysqli_connect(): (HY000/1045): ''@'localhost' 사용자에 대한 액세스가 거부되었습니다(사용). 비밀번호: NO) 18행의 D:xuexicoredb.php
    연결 실패: ''@'localhost' 사용자에 대한 액세스가 거부되었습니다(비밀번호 사용: NO)

    회신하다
    0
  • 、馬

    、馬2018-07-11 09:41:17

    머뭇거림

    회신하다
    1
  • 无忌哥哥

    无忌哥哥2018-07-11 09:24:01

    데이터베이스 비밀번호가 잘못되었습니다.

    회신하다
    1
  • 、馬

    생각해 보세요

    、馬 · 2018-07-11 09:41:59
  • 취소회신하다