php - 获取某列数据以外的数据

标签 php mysql

所以我有以下代码:

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/

相关文章:

php - Zend Framework 多表查询

php - 由于 ssl ca 问题,Mandrill 网络 Hook 失败

javascript - 如何在这个脚本中写 onChange?谁能告诉我正确的语法

mysql - 内置函数和分组在 Microsoft Access 中不起作用

php - 如何确定同一列中日期之间的差异?

php - 这里需要尾随分号吗?

mysql - 错误代码 : 1582 Incorrect parameter count in the call to native function 'STR_TO_DATE'

mysql - 从 mysql 文本字段中提取数据并按它排序 - 可能吗?

MySQL插入后触发器

使用连接和多个 AND 的 MySQL 查询不太有效