我有文章,每个人都有看法。在侧边栏中,我显示访问量最大的文章。所有人都在工作,但是有秩序是问题。例如,我有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
答案 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
),它将正确排序。