php - 在 mysql 中,一行总是在最上面

标签 php mysql sorting select sql-order-by

我是一个自学成才的程序员,所以我可能会忽略一些我在类里面没有学到的非常简单的答案,但是......

我有一个充满不同业务的数据库,其中它们的唯一 ID 对应于它们在我的服务器上的图片名称。每次加载我网站上的页面时,我都希望 php 以最少的浏览量获取业务(和后续广告)。如果相关,我还有两种不同尺寸的广告。我将尝试说明。

表:

Business Name | Unique ID | Views | Size
--------------+-----------+-------+------
Business 1    | 1         | 50    | Small
Business 2    | 2         | 9     | Small
Business 3    | 3         | 67    | Large
Business 4    | 4         | 9     | Large

所以我使用这个脚本来检索浏览量最低的业务

SELECT * FROM ads WHERE size='Large' ORDER BY views ASC

现在回答我的问题 - 这一直有效,直到所有 View 都达到“9”,然后它似乎只选择了两个广告(每个尺寸各一个)来始终显示。因此,在示例中,您可能希望选择 Business 4,但由于某种原因,始终选择 business 3

此外,当我在 PhpMyAdmin 中进行调查并单击列名 views 以按 View 排序时,这两个业务始终位于顶部或底部(分别为 ASC 和 DESC),从不混合与名单。现在,当我对 ASC 进行排序时,我得到:

Views
50
67
9
9 
9
9

50 和 67 显然顺序不对,网页上总是显示这两个。似乎在“9”之后这两个被分配了某种优先级,我无法弄清楚。

我还应该提到在特定网页调用时处理表的方式:

$result = mysql_query("SELECT * FROM ads WHERE size='Large' ORDER BY views ASC") or die(mysql_error());
$productCount = mysql_num_rows($result); // count the output amount
if ($productCount > 0) {
    if($row = mysql_fetch_array($result)){ 
            $id = $row["id"];
        $url = $row["url"];
        $views = $row["views"];
            $businessName = $row["businessName"];
    }
}
$views = $views + 1;
$sql = mysql_query("UPDATE ads SET views='$views' WHERE id='$id'");

这是在我网站上每个页面的 php 代码中。

广告使用以下 html 代码显示:

<div id="ad1">
        <a href="<?php echo $url; ?>" target="_blank"> <img src="inventory_images/<?php echo $id; ?>.jpg" alt="<?php echo $businessName; ?>" height="144" width="216"/></a>
    </div>

希望这些信息足够了,非常感谢您的帮助!

最佳答案

确保您的“views”列设置为类型“int”而不是“char”或“varchar”,否则它不会按您预期的方式排序。

关于php - 在 mysql 中,一行总是在最上面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369157/

相关文章:

php - 使用 Laravel Mix 编译时出错 - Vue

php - 在 laravel 5.2 中显式插入 `id` 自动增量主键字段

mysql生日提醒,闰年

java - Java 中数组列表出现越界异常错误

java - 多次按下排序按钮时排序表错误?

php - 写入上下文错误中的方法返回值

php - SQLite 数据库中的递归被锁定

mysql - Rails 3 和 ActiveRecord - 关于日期的 sql 查询

php - 获取/检索另一列相同值下的多个字段值

c - 如何在 C 中对指向 char 的指针数组进行 qsort?