php - 我有来自 mysql 的数据,但错误地转换为 JSON

标签 php mysql sql database json

我有下表:

-> +-----+---------+-----+-------+--------------+
-> | id1 | fname   | id2 | fname | relationship |
-> +-----+---------+-----+-------+--------------+
-> |   4 | Albaraa |   5 | Sadi  | Father       |
-> +-----+---------+-----+-------+--------------+

我将以下内容分配给变量 $relations:

$relations = $stmt->fetchAll(PDO::FETCH_ASSOC);

最后,我使用以下命令打印出该变量的 JSON 编码:

echo json_encode($relations);

...我得到以下输出:

[{"id1":"4","fname":"Sadi","id2":"5","relationship":"Father"}]

所以这里有一些关于我得到的输出的问题:

1)您可以看到我的输出似乎不正确,因为它应该是这样的:

[{"id1":"4","fname":"Albaraa","id2":"5","fname":"Sadi","relationship":"Father"}]

为什么它打印不正确,这与表有两列具有相同名称“fname”的事实有关吗?如果有任何关于如何解决此问题的意见,那就太棒了!

2)我很想知道的另一件事是,我实际上想将 JSON 更改为如下所示:

[{"id":"4","name":"Albaraa","id":"5","name":"Sadi","relationship":"Father"}]

是否有一种简单的方法可以将“id1”和“id2”更改为“id”,并将“fname”更改为“name”?

再次,任何对此的意见都将不胜感激!

最佳答案

1) fname 被覆盖。尝试在 SQL 查询中使用不同的别名来匹配字段。

2) 您不应传递精确的名称匹配属性。它们可能会被 JSON 解码器覆盖。最好将它们作为不同的 JSON 部分传递。

[{"id":"4","name":"Albaraa","id":"5","name":"Sadi","relationship":"Father"}]

应该是这样的:

{
    "person1":{"id":4,"name":"Albaraa"},
    "person2":{"id":5,"name":"Sadi"},
    "relationship":"Father"
}

UPDv1:

结果:

-> +-----+---------+-----+--------+--------------+
-> | id1 | fname1  | id2 | fname2 | relationship |
-> +-----+---------+-----+--------+--------------+
-> |   4 | Albaraa |   5 | Sadi   | Father       |
-> +-----+---------+-----+--------+--------------+

尝试这样转换:

<?php
// $row is sql fetched row.

$person1  = array('id' => $row['id1'], 'name' => $row['fname1']);
$person2  = array('id' => $row['id2'], 'name' => $row['fname2']);
$response = array(
     'person1' => $person1,
     'person2' => $person2,
     'relationship' => $row['relationship']
);

echo json_encode($response);

?>

关于php - 我有来自 mysql 的数据,但错误地转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16292457/

相关文章:

php - 无法使用 PHP 在 mongodb 上进行身份验证

创建触发器时 MySQL 语法错误

php - Codeigniter MySQL 对 bool 值的成员函数 real_escape_string() 进行调用

sql - 主键是否应始终指定为聚集索引

php - 空值的累积求和

java - 在 DB2 中使用 Substring 和 Instr 选择查询

php - 2 foreach。对于 'n' 级别,闯入新的 ul

php - 从 JSON 获取数据(使用 Mapquest 和 PHP)

javascript - html 文件类型图像上传后增加文本计数器

javascript - 如何在数据库中插入 Bootstrap 下拉值