Select Query array and array from POST not lining up


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

然后从下方的查询中选择费率

<?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查询似乎是根据表中的pcategories字段按字母顺序出现的。

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

任何帮助都将非常感谢

使用FIELD函数根据结果在$pcategories 中的位置对结果进行排序

$sql = "SELECT `categories`, `rate`, `elevy`  
        FROM `lt_products` 
        WHERE `categories` IN ('".implode("','",$pcategories)."') 
        ORDER BY FIELD(categories, '".implode("','",$pcategories)."')";