我有一个包含多个条目的数据库。我感兴趣的条目的特定列称为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)));
有人可以按正确的方向推动我吗?
答案 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 *
使得脚本真正需要使用哪些列不明确。