人口最多的关节

时间:2018-12-05 16:32:35

标签: php

我有文章,每个人都有看法。在侧边栏中,我显示访问量最大的文章。所有人都在工作,但是有秩序是问题。例如,我有4篇文章。 1条文章有10个视图,2-7个视图,3-6个视图,4-3个视图。订单是

1) 1 article - 10
2) 2 article - 7
3) 3 article - 6
4) 4 article - 3

所以我们可以看到一切正常。但是,当我再添加一个artilce时,它具有1个视图顺序更改,而第5 artilce居首,但是为什么。它的观点比其他文章低?当第5条获得10个视图时,一切正常,并且顺序已恢复。但是,为什么当订单重新发出请求时,上一个artilce的视图却超过10个?

<?php 
    $dbname="php";
    $dbhost="localhost";
    $dbusername="root";
    $dbuserpassword="";
    $optins= array(PDO::MYSQL_ATTR_INIT_COMMAND=>'set NAMES utf8');

    try{
        $db= new PDO("mysql:host={$dbhost};dbname={$dbname};chartset=utf8",
        $dbusername,$dbuserpassword,$optins);
    } catch (PDOException $ex) {
        die("Fail to connect".$ex->getMessage());
    }
		
    // all post	
    $sql = "select * from tbl_blog order by page_view desc limit 5";
    $data=$db->prepare($sql);
    $data->execute();
    $allpost=$data->fetchAll();
    // Single Post

创建表:

CREATE TABLE tbl_blog (
  id int(11) NOT NULL,
  blog_title text NOT NULL,
  description text NOT NULL,
  content text NOT NULL,
  page_view varchar(10) NOT NULL,
  category text NOT NULL,
  img varchar(225) NOT NULL,
  sub_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = InnoDB DEFAULT CHARSET = utf8

2 个答案:

答案 0 :(得分:0)

对我来说,似乎字母顺序可以控制page_view属性。

如果将page_view属性定义为varchar,例如,它将像字符一样排序:

“ 3” “ 2” “ 12” “ 11” “ 10” “ 1”。

选中以将page_view属性设置为整数,以具有 1个 2 3 10 11 12

希望获得帮助

答案 1 :(得分:0)

问题在于page_view的数据类型为VARCHAR(10),因此它按字符串而不是数字排序。

将数据类型更改为数字类型(例如INTEGER),它将正确排序。