Select 查询数组和来自 POST 的数组不对齐

Select Query array and array from POST not lining up

当用户输入表单时,我知道如何知道用户可以输入什么,因为数据库中有数百个选项。 我正在使用 foreach 循环从他们选择的发布字段中获取类别和成本示例:

<td><?php foreach($pcategories as $value){echo "$value <br>";}?></td>

$qty    $pcategories    $cost    $Rate   
1       Bicycles        100      45
7       Auto Parts      200      60
5       Alarm Sys       300      35

然后根据下面的查询select计算汇率

<?php $connection = mysqli_connect("localhost","root","","customs") or die("Error " . mysqli_error($connection));
      $sql = "SELECT `categories`, `rate`, `elevy`  FROM `lt_products` WHERE `categories` IN ('".implode("','",$pcategories)."')";
               $result = mysqli_query($connection, $sql)or die(mysql_error());
                  while($row = mysqli_fetch_assoc($result)) {?>
                       <?php echo $row["rate"]; ?> <br>
        <?php } ?>

这是查询根据用户输入的类别提取正确费率的问题 但费率与用户输入的类别顺序不匹配。

上面的汇率实际上应该像下面这样,但我得到的却是上面的汇率

$qty    $pcategories    $cost    $Rate   
1       Bicycles        100      35
7       Auto Parts      200      60
5       Alarm Sys       300      45

select 查询似乎是根据 table 中的 pcategories 字段按字母顺序排列的。

我不知道解决此问题的最佳方法是什么,以便实际费率与用户选择的类别匹配。

如有帮助将不胜感激

使用 FIELD 函数根据结果在 $pcategories

中的位置对结果进行排序
$sql = "SELECT `categories`, `rate`, `elevy`  
        FROM `lt_products` 
        WHERE `categories` IN ('".implode("','",$pcategories)."') 
        ORDER BY FIELD(categories, '".implode("','",$pcategories)."')";