PHP/SQL 从 SQL 表中获取正确的数组
Posted
技术标签:
【中文标题】PHP/SQL 从 SQL 表中获取正确的数组【英文标题】:PHP/SQL get proper array from SQL table 【发布时间】:2016-12-28 19:30:41 【问题描述】:我在数据库中得到了下表
- ID | successor
- 01 | 02
- 01 | 04
- 01 | 08
- 02 | 03
- 04 | 05
- 05 | 06
这只是一个简单的电子学习系统内容分配表(这是正确的英文术语吗?)。
我当前的 php 代码是这样的
$sqlget = "SELECT * from successor";
$result = $conn->query($sqlget);
$dbsuccessor = [];
if ($result->num_rows > 0)
// output data of each row
while($row = $result->fetch_assoc())
$dbsuccessor[] = $row;
else
echo "0 results";
使用 json_encode 将其解析为 js 后,我得到了一个像这样的无用构造
var successors = <?php echo json_encode($dbsuccessor);?>;
console.log(successor);
数组[9]
0:
对象 ID:“1” - 继任者:“2”
1:
对象 ID:“1” - 继任者:“4”
2:
对象 ID:“1” - 继任者:“8”
公平地说,这显然正是您对我上面使用的代码所期望的。
我的目标是这样的数组输出:
ID:"1" -> 后继"2","4","8"
所以在 javascript 中输入 console.log(successors[1]);
时,我可以看到 ID 为 1 的模块的所有后继模块
最好的办法是我的数据库表保持原样。 我怎样才能实现我的目标?
【问题讨论】:
请检查下面的答案,如果有任何人为您工作,那么将其标记并投票为可接受的答案。如果他们有用,也给其他人投票。 @Martin 如果您不需要进一步的帮助,请关闭您的问题。 我读到我需要 250 的声誉才能关闭某些东西。如果这不是真的,请告诉我该怎么做。 【参考方案1】:使用Group_concat() 来实现这一点
将您的查询更改为
$sqlget = "SELECT ID,group_concat(successor) from successor group by ID";
$result = $conn->query($sqlget);
$dbsuccessor = [];
if ($result->num_rows > 0)
// output data of each row
while($row = $result->fetch_assoc())
$dbsuccessor[] = $row;
else
echo "0 results";
【讨论】:
必须感谢更好的答案。+10 就是这样,非常感谢。我没有测试这里发布的任何其他解决方案。【参考方案2】:将生成数组的代码更改为:
$dbsuccessor[$row['ID']][] = $row['successor'];
【讨论】:
以上是关于PHP/SQL 从 SQL 表中获取正确的数组的主要内容,如果未能解决你的问题,请参考以下文章