根据数据库特定列中的数据库行条目创建数组,并用于foreach循环

时间:2019-03-01 10:46:05

标签: php sql arrays

我有一个包含多个条目的数据库。我感兴趣的条目的特定列称为F1=01 AND F2=02 AND F3=03 AND F4=04 AND F5=05 AND F7=07 AND F8=08 AND F9=09 AND F10=010 。如果TimerTask中有10行条目,我正在尝试使用PHP创建唯一条目的数组。

例如,条目将为sample_group,创建数组后应为:sample_group

这是我尝试的代码,可以工作,但数组末尾有一个空条目:

"food", "food", "water", "food", "swabs", "swabs", "swabs", "food", "water", "water"

然后是array("food", "water", "swabs")循环:

 $sql3 = "SELECT * FROM samples_database WHERE order_id=$order_id;";
  $result3 = mysqli_query($conn, $sql3); 
$group_array = '';
  while ($input = mysqli_fetch_array($result3)) {
    $group_array .= $input['sample_group'] . ',';
  }
  $group_array2 = array_filter(array_unique(explode(',', $group_array)));

有人可以按正确的方向推动我吗?

2 个答案:

答案 0 :(得分:6)

如果您将$group_array设置为实际数组,则会简单得多:

$group_array = array();
while ($input = mysqli_fetch_array($result3)) {
    $group_array[] = $input['sample_group'];
}
$group_array = array_unique($group_array);
foreach ($group_array as $group) {
    //do something
}

答案 1 :(得分:5)

我建议仅在MySQL方面执行@ObjectIdColumn() id: ObjectID; @Column() name: string; @Column() startDate: Date; @Column() endDate: Date; @Column() inspectionTypeId: string; @Column() questions: string[]; @Column('boolean', {default: true}) isActive: boolean;

isActive

注意:理想情况下,在构建SQL查询时,应使用准备好的语句,并避免串联。我试图提供使用准备好的语句的代码。

此外,我仅用SELECT DISTINCT替换了您的$sql = "SELECT DISTINCT sample_group FROM samples_database WHERE order_id = ?"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("i", $order_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $group_array[] = $row['sample_group']; } } (所有列)。这样做的原因是,一方面,当您的脚本仅需要其中一列时选择所有列会浪费网络带宽,并可能会损害性能。另一个原因是SELECT *使得脚本真正需要使用哪些列不明确。