Maison  >  Questions et réponses  >  le corps du texte

Le code de pagination encapsule une partie de l'erreur de connexion SQL

Professeur, pour la partie pagination, j'ai demandé Attention : mysqli::mysqli() : (HY000/1045) : Accès refusé pour l'utilisateur ''@'localhost' (en utilisant le mot de passe : NON) dans E:yifengcoreDb.php à la ligne 19

échec de la connexion : accès refusé pour l'utilisateur ''@'localhost' (en utilisant le mot de passe : NON)

pagination de la fonction statique publique ($table, $where = '', $page = 1, $pagesize = 10, $order = ' '){
$conn = self::db_connect();
$totals = self::totals($table, $where); // Nombre total d'entrées
$totalpage = ceil($totals / $pagesize); // Nombre total de pages
$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); // Exécuter sql
if ($result->num_rows > ; 0) { // Nombre de données renvoyées
        while ($row = $result->fetch_assoc()) {                   $rows [] = $row; ;free_result(); // Libère la mémoire des résultats
}
  $conn->close();
  return array(
                                                                                                     
'taille de la page' =>

phpcn_xinyuphpcn_xinyu2267 Il y a quelques jours1443

répondre à tous(7)je répondrai

  • Alone88

    Alone882019-04-09 22:14:21

    Appelez db_connect deux fois, l'une est directement db_connect, la deuxième fois est totale, je ne sais pas pourquoi le professeur n'a pas fait d'erreur,

    Une façon est de réécrire la méthode d'obtention du nombre total dans la méthode de pagination et assignez-le à la variable

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


    répondre
    0
  • Alone88

    Le principal problème est que db_connect importe la configuration de la base de données. Le deuxième appel risque de ne pas pouvoir l'appeler. S'il n'est pas utilisé, la définition de la configuration de la base de données directement dans db_connect ne posera pas ce problème.

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

    Vous pouvez également modifier require_once en require

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

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

    跟我的一样的问题
    Avis : Variable non définie : db dans D:xuexicoredb.php en ligne 18

    Avis : Variable non définie : db dans D:xuexicoredb.php en ligne 18

    Avis : Variable non définie : db dans D :xuexicoredb.php en ligne 18

    Avis : Variable non définie : db dans D:xuexicoredb.php en ligne 18

    Attention : mysqli_connect() : (HY000/1045) : Accès refusé pour l'utilisateur ''@'localhost' (en utilisant mot de passe : NON) dans D:xuexicoredb.php en ligne 18
    Échec de la connexion : accès refusé pour l'utilisateur ''@'localhost' (en utilisant le mot de passe : NON)

    répondre
    0
  • 、馬

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

    Hésitant

    répondre
    1
  • 无忌哥哥

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

    Le mot de passe de la base de données est erroné.

    répondre
    1
  • 、馬

    Pensez-y

    、馬 · 2018-07-11 09:41:59
  • Annulerrépondre