所以我有以下代码:
require_once('db.php');
$getUsers = mysqli_query($db, 'SELECT * FROM users');
$rows = [];
while ($r = mysqli_fetch_assoc($getUsers)) {
$rows[] = $r;
$getSkills = mysqli_query($db, "SELECT * FROM skills WHERE id = '" . $r['id'] . "'");
while($r = mysqli_fetch_assoc($getSkills)) {
$rows['skills'] = $r;
}
}
print(json_encode($rows));
哪些输出:
[{"id":"1","name":"user1","skills":{"woodcutting":"6","mining":"10"}},{"id":"2","name":user2"}]
有两个问题:
- 我想获取表
skills
中除 id 之外的所有数据,或者至少在使用 json 编码之前将其删除。 - 出于某种原因,我无法获得第一个用户之后显示的“技能”。 user2 还应该有一个技能对象。
我做错了什么?
最佳答案
要从表 skills
中获取除 id
之外的所有列,您可以列出所有要选择的列,如下所示:
mysqli_query($db, "SELECT column1, column2, another_column FROM `skills` WHERE id = '" . $r['id'] . "'");
或者,您可以SELECT
所有内容并使用unset()
在json 编码之前清除id
列:
$getSkills = mysqli_query($db, "SELECT * FROM skills WHERE id = '" . $r['id'] . "'");
while ($r = mysqli_fetch_assoc($getSkills))
{
unset($r['id']);
// whatever it is that you want to do.
}
skills
除了最后一个用户 (?) 之外没有显示,因为您在 while
循环的每次迭代中都重新分配它。您可以改为执行以下操作:
require_once('db.php');
$getUsers = mysqli_query($db, 'SELECT * FROM users');
$rows = array();
while ($r = mysqli_fetch_assoc($getUsers))
{
$skills = array();
$tempRow = $r;
$getSkills = mysqli_query($db, "SELECT * FROM skills WHERE id = '" . $r['id'] . "'");
while ($r = mysqli_fetch_assoc($getSkills))
{
unset($r['id']); // since you don't want the `id`.
$skills[] = $r;
}
$tempRow['skills'] = $skills;
$rows[] = $tempRow;
}
print(json_encode($rows));
希望对您有所帮助 :)
关于php - 获取某列数据以外的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27321770/