【问题标题】:sort rows by a custom array按自定义数组对行进行排序
【发布时间】:2019-05-26 18:23:57
【问题描述】:

是否可以通过从另一个表或以某种方式给出的自定义数组 ids 对行进行排序。

$str = "5,2,3,6,911,18,118,65,985,15...";  

$arr = explode(',', $str);

function get_titles($status){
    global $db;
    $sql = "select * from arts where status = :astatus order by " . $arr . " asc";
    $st = $db->prepare($sql);
    $st->execute([":astatus" => $status]);
    ...
}

【问题讨论】:

  • 这可能会有所帮助...stackoverflow.com/questions/348410/…
  • @Sean,您的链接上的两个答案都是关于sort by field。我没有作为排序标准的字段,而是一个外部数组。
  • 该字段是订购的依据。您的数组是附加值。 IE。 ... ORDER BY field(id, ". $str .") ...
  • 如果答案正确请批准

标签: php mysql


【解决方案1】:

如果您想通过自定义id 订购...

# $str = "5,2,3,6,911,18,118,65,985,15...";
# Values separated by comma
# It can be from array
#     $str = implode(",",[5,2,3,6,911,18,118,65,985,15])

$str = "5,2,3,6,911,18,118,65,985,15";  

function get_titles($status,$arr){
    global $db;
    $sql = "SELECT * FROM arts WHERE status = :astatus ORDER BY FIELD(id,".$arr .") ASC";
    $st = $db->prepare($sql);
    $st->execute([":astatus" => $status]);
    ...
}

get_titles($status,$str)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多