php - 如何消除重复的结果
问题描述
我正在做一个查询,但它返回重复的日期
<select name="option_date">
<?php
$sql_product_id = "SELECT * FROM `pat_order_product` WHERE `product_id` = $id_product";
$result_product_id = mysql_query($sql_product_id,$link);
while($row_product_id = mysql_fetch_array($result_product_id)){
$product_options = str_replace('\\','', $row_product_id["product_options"]);
$data = $product_options;
$books = json_decode($data, true);
$product_option_date = $books[0]['value']['name'];
?>
<option value="<?php echo $product_option_date; ?>"><?php echo $product_option_date; ?></option>
<?php } ?></select>
当我执行查询时,它会导致这些重复的日期
<select name="option_date">
<option value="26 Oct 2019">26 Oct 2019</option>
<option value="26 Oct 2019">26 Oct 2019</option>
<option value="26 Oct 2019">26 Oct 2019</option>
<option value="09 Nov 2019">09 Nov 2019</option>
<option value="09 Nov 2019">09 Nov 2019</option>
</select>
我正在寻找的是每个日期我只得到一个结果
2019 年 10 月 26 日
2019 年 11 月 9 日
解决方案
您可以遍历结果,并生成一个值数组。在该数组上使用array_unique()
,可以确保您只获得唯一值。
在处理查询中的用户输入时,您还应该使用准备好的语句(这意味着使用mysqli_
而不是高度过时和不安全的mysql_
API)。
<?php
// Create a MySQLi connection and set exception handling mode
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = new mysqli("localhost", "user", "pass", "database");
// Get the product-options and put the dates in an array using a prepared statement
$result = [];
$sql = "SELECT product_options FROM pat_order_product WHERE product_id = ?";
$stmt = $link->prepare($sql);
$stmt->bind_param("s", $id_product);
$stmt->execute();
$stmt->bind_result($product_options);
while ($stmt->fetch()) {
$data = str_replace('\\', '', $product_options);
$books = json_decode($data, true);
$result[] = $books[0]['value']['name'];
}
// Loop the results with array_unique() to get unique results, and print it
?>
<select name="option_date">
<?php
foreach (array_unique($result) as $value) {
?>
<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
<?php
}
?>
</select>
有用的阅读材料
推荐阅读
- multipartform-data - 如何设置 Azure API 管理以接受带有表单数据字段的 POST 并将它们传递给旧 API
- c# - 使用 Async 调用 WebAPI 无法正确返回
- javascript - insertBefore(), before() & Closest - 在我需要的地方插入数据
- spring-boot - 搜索功能,但删除不是来自前端的字段
- content-management-system - 将 Netlify CMS 与现有静态网站集成
- c++ - 不断收到错误消息并非所有控制路径都返回值
- spring-boot - 如何通过 Xml 配置连接(a)JpaRepository 的(子类/子接口)?
- wordpress - Post Object Timber/Twig WordPress 的问题
- java - 将数据插入firebase实时数据库后看不到数据
- html - 如何防止引导模式被拖到其父容器之外?