php - 将 MySQL 结果查询到多维关联 PHP 数组中
问题描述
我可能忽略了一种相当简单的方法;也许有人知道如何通过有限的循环和没有过长的查询来简化此操作。假设我有一个 MySQL 表,其中包含如下数据:(有 12 个月,可能有 10 个不同的可能等级)。我将只查询给定 user_id 和年份的结果。
+----+---------+------+-------+-------+-------+
| id | user_id | year | month | grade | value |
+----+---------+------+-------+-------+-------+
| 1 | 1 | 2021 | Jan | A | 95 |
+----+---------+------+-------+-------+-------+
| 2 | 2 | 2021 | Jan | D | 75 |
+----+---------+------+-------+-------+-------+
| 3 | 2 | 2021 | Feb | F | 45 |
+----+---------+------+-------+-------+-------+
我希望能够查询数据并将其放入多维关联 PHP 数组中。本质上,所以我可以像这样访问数据:
echo $month_value['Jan']['D']; // Should give me 75
echo $month_value['Feb']['F']; // Should give me 45
解决方案
想出了一个对我有用的简单方法:
$sql_retrieve = $con->prepare("SELECT month, grade, value
FROM table
WHERE user_id = ? AND year = ?;");
$bind_process = $sql_retrieve->bind_param('ii',$user_id,$year);
$sql_retrieve->execute();
$result = $sql_retrieve->get_result();
$month_values = []; // initialize array
if($result->num_rows > 0 ){ // If there are results
while($row=$result->fetch_assoc()){
$month_values[$row["month"]][$row["grade"]] = $row["value"]; // add to array
} // end while
} // end of if num_rows > 0
print_r($month_values); // Example
echo 'Value: '.$month_values['Jan']['D'];
然后,这会将 MySQL 结果提供到多维关联 PHP 数组中,因此可以这样引用它们。
推荐阅读
- java - 将 HashMap 键和值存储到 Java 中的两个单独的字符串变量中
- java - 不稳定的 Java 重新排序
- python - 正则表达式 - 如何在一组中捕获两种模式?
- python - 什么时候应该打包 python 项目?你应该打包个人项目吗?
- javascript - Javascript 使用文本输入中的值选择下拉选项?
- python - ValueError 缓冲区源数组是只读的
- java - 折叠工具栏显示片段中处于折叠状态的额外工具栏
- reactjs - 道具类型失败:“数组”类型的道具无效,应为“对象”
- spring-boot - WireMock 未使用 Spring Boot 集成测试拦截 http 请求
- python - 结合两个 Pandas Dataframes Python 的最佳方法