【问题标题】:Select Query array and array from POST not lining upSelect Query array and array from POST not lining up
【发布时间】:2015-12-29 21:25:57
【问题描述】:

当用户输入表单时,我知道用户可以输入什么,因为数据库中有数百个选项。 我正在使用 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

选择查询似乎是根据表中的 pcategories 字段按字母顺序出现的。

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

任何帮助都会非常感谢您

【问题讨论】:

  • 如果您希望结果按特定顺序排列,您需要一个ORDER BY 子句。
  • 我不明白当您只是回显速率时如何获得多列输出。
  • 将所有列一起回显,速率应该与类别正确匹配。
  • 费率来自包含类别和费率的表格,$qty、$pcategories 和成本来自用户在表单中输入的内容。
  • 您需要在查询中使用ORDER BY,以便按照您在创建表单时使用的顺序生成结果。

标签: php arrays sorting mysqli


【解决方案1】:

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

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

【讨论】:

  • 如果这解决了问题,请单击旁边的复选框接受答案。
猜你喜欢
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 2022-12-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
  • 2019-03-11
相关资源
最近更新 更多