ホームページ  >  に質問  >  本文

ページネーション コードは SQL 接続エラーの一部をカプセル化します

先生、ページングの部分について、警告: mysqli::mysqli(): (HY000/1045): E:\yifeng\core のユーザー ''@'localhost' (パスワードを使用: NO) のアクセスが拒否されました。 \ Db.php 19 行目

接続に失敗しました:ユーザー ''@'localhost' のアクセスが拒否されました (パスワードを使用: 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){//返されたデータの数

'Total' => $ totals、###

phpcn_xinyuphpcn_xinyu2266日前1441

全員に返信(7)返信します

  • Alone88

    Alone882019-04-09 22:14:21

    db_connect を 2 回呼び出します。1 回目は db_connect を直接呼び出し、2 回目は合計です。なぜ教師がエラーをしなかったのかわかりません。

    1 つの方法は、ページング メソッドで合計数を取得するメソッドを書き換えることです。それを変数に代入します

        /**
         * @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

    跟我の一样的问题
    通知: 未定義の変数: D:xuexicoredb.php の 18 行目の db

    通知: 未定義の変数: D:xuexicoredb.php の 18 行目の db

    通知: 未定義の変数: D の db :xuexicoredb.php 行 18

    注意: 未定義の変数: D:xuexicoredb.php 行 18 の db

    警告: mysqli_connect(): (HY000/1045): ユーザー ''@'localhost' のアクセスが拒否されました (使用パスワード: NO) D:xuexicoredb.php の 18 行目
    接続に失敗しました: ユーザー ''@'localhost' のアクセスが拒否されました (パスワード: NO を使用)

    返事
    0
  • 、馬

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

    迷っています

    返事
    1
  • 无忌哥哥

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

    データベースのパスワードが間違っています。

    返事
    1
  • 、馬

    考えてみてください

    、馬 · 2018-07-11 09:41:59
  • キャンセル返事