Heim  >  Fragen und Antworten  >  Hauptteil

Der Paginierungscode kapselt einen Teil des SQL-Verbindungsfehlers

Lehrer, für den Paging-Teil habe ich in E:yifengcoreDb.php in Zeile 19 „Warnung: mysqli::mysqli(): (HY000/1045): Zugriff verweigert für Benutzer „@'localhost“ (mit Passwort: NO)“ angezeigt

Verbindung fehlgeschlagen: Zugriff für Benutzer ''@'localhost' verweigert (mit Passwort: NEIN)

öffentliche statische Funktionspaginierung($table, $where = '', $page = 1, $pagesize = 10, $order = ' '){
$conn = self::db_connect();
$totals = self::totals($table, $where); // Gesamtzahl der Einträge
$totalpage = ceil($totals / $pagesize); // Gesamtzahl der Seiten
$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 ausführen
if ($result->num_rows > ; 0) {// Die Anzahl der zurückgegebenen Daten
While ($ row = $ result- & gt; fetch_assoc ()) { // Bindung der zurückgegebenen Daten
$ ROWS [] = $ row;
} $ result- & gt ;free_result(); // Ergebnisspeicher freigeben
}
  $conn->close();
  return array(

'Seitengröße' =>

phpcn_xinyuphpcn_xinyu2316 Tage vor1485

Antworte allen(7)Ich werde antworten

  • Alone88

    Alone882019-04-09 22:14:21

    调用了两次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);
        }


    Antwort
    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

    跟我的一样的问题
    Notice: Undefined variable: db in D:\xuexi\core\db.php on line 18

    Notice: Undefined variable: db in D:\xuexi\core\db.php on line 18

    Notice: Undefined variable: db in D:\xuexi\core\db.php on line 18

    Notice: Undefined variable: db in D:\xuexi\core\db.php on line 18

    Warning: mysqli_connect(): (HY000/1045): Access denied for user ''@'localhost' (using password: NO) in D:\xuexi\core\db.php on line 18
    Connection failed:Access denied for user ''@'localhost' (using password: NO)

    Antwort
    0
  • 、馬

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

    吞吞吐吐

    Antwort
    1
  • 无忌哥哥

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

    数据库密码错了。

    Antwort
    1
  • 、馬

    想想

    、馬 · 2018-07-11 09:41:59
  • StornierenAntwort