繁体   English   中英

查询 MySQL 结果为多维关联 PHP 数组

[英]Querying MySQL results into multi-dimensional associative PHP array

我可能忽略了一种相当简单的方法; 也许有人知道如何通过有限的循环和没有过长的查询来简化此操作。 假设我有一个 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 数组中,因此可以这样引用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM