【问题标题】:PHP ordering trophies [duplicate]PHP订购奖杯[重复]
【发布时间】:2019-08-12 20:31:28
【问题描述】:

我希望使用 PHP 按类型订购奖杯。

$trophies = $engine->query("SELECT name, detail, type FROM trophy WHERE group=:group");
$trophies->execute(array(':group'=>$group));

if($trophies->rowCount() > 0) {
    while ($trophy = $trophies->fetch(PDO::FETCH_ASSOC)) {
        echo $trophy['name'] . ': ' . $trophy['type'] . '<br>';
    }
} else {
    echo 'No trophies to be displayed.';
}

现在,奖杯没有被订购。

奖杯可以有以下类型:铂金、金、银、青铜。

我想先展示铂金,然后是金,然后是银,然后是青铜。

我该怎么做?是否可以修改 SQL 查询以使奖杯按预期方式运行?

【问题讨论】:

  • 请显示数据库架构和少量测试数据。 “群”是干什么用的?还是“类型”?所有这些金属都属于同一族吗?表中是否还有更多字段(例如:“sort_order”?:))
  • stackoverflow.com/questions/3550942/… if 你需要一个订单
  • stackoverflow.com/a/9378709/1512654 你也可以使用 FIELD()
  • 您希望如何在没有ORDER BY 的情况下按特定顺序显示它们?如前所述,如果我们不知道您正在使用哪些数据,我们将无法帮助您解决问题。

标签: php sql loops


【解决方案1】:

或者,如果这些都没有用,您可以在您的选择中创建额外的列:

SELECT ...., IF(type = 'platinum',1,0) as plat, IF(type='gold',2,0) AS gold...等然后使用多个订单,如ORDER BY play, gold ....等

【讨论】:

    【解决方案2】:

    添加ORDER BY FIELD(type,'platinum','gold','silver','bronze'), ID解决

    感谢 cmets 中的@khartnett

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-21
      • 2017-03-24
      • 1970-01-01
      • 2021-04-14
      • 2018-06-30
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多