我在数据库中得到了下表
- 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);
Array[9]
0:
Object ID: "1" - successor: "2"
1:
Object ID: "1" - successor: "4"
2:
Object ID: "1" - successor: "8"
公平地说,这显然正是您对上面使用的代码所期望的。
我的目标是像这样的数组输出:
ID: "1" -> successor"2","4","8"
这样我在 javascript 中输入 console.log(successors[1]);
时可以看到 ID 为 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";
}
关于javascript - PHP/SQL 从 SQL 表中获取正确的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076281/