Php 按特定顺序选择特定行
我有一个脚本(在PHP中),它通过一系列不同的比较,根据行id在表中生成一个有序的条目数组。然后我将数组内插到一个字符串中,并使用WHERE来选择那些特定的行,但是我不知道如何按照数组中的顺序对它们进行排序Php 按特定顺序选择特定行,php,mysql,sql,sql-order-by,where-clause,Php,Mysql,Sql,Sql Order By,Where Clause,我有一个脚本(在PHP中),它通过一系列不同的比较,根据行id在表中生成一个有序的条目数组。然后我将数组内插到一个字符串中,并使用WHERE来选择那些特定的行,但是我不知道如何按照数组中的顺序对它们进行排序 $order_array = [50,49,42,52,53,54,51,48,47] $order_string = implode(',', $order_array); // echo $order_string returns '50,49,42,52,53,54,51,48,47'
$order_array = [50,49,42,52,53,54,51,48,47]
$order_string = implode(',', $order_array);
// echo $order_string returns '50,49,42,52,53,54,51,48,47'
$sql_todo = "SELECT * FROM todo_list WHERE id IN ({$order_string})";
if ($result_todo = mysqli_query($link, $sql_todo)) {
while ($row_todo = mysqli_fetch_assoc($result_todo)) {
这将成功选择所需的行,但它们的顺序与数组不同。我知道我没有告诉它那样订购(所以它没有),但我不知道如何做到这一点
谢谢你抽出时间
赛斯你可以使用:
field()
返回列表中第一个参数的索引,您可以直接使用该索引进行排序
旁注:您可能应该使用准备好的语句,而不是在查询字符串中串联值(如果您的值来自代码之外,这是必须的)
"SELECT * FROM todo_list WHERE id IN ({$order_string}) ORDER BY FIELD(id, {$order_string})"