使用php PDO和MySQL返回行值

时间:2014-03-26 10:55:14

标签: php mysql sql

我目前正在使用两个看起来像这样的表:

tasks(user1, user2)

users(id, name)

我正在执行以下查询:

SELECT * FROM tasks 
LEFT JOIN users u1 ON tasks.user1 = u1.id 
LEFT JOIN users u2 ON tasks.user2 = u2.id 

我正在使用PHP PDO来执行查询并返回一个数组,然后我将其编码为json,如下所示:

$query = $con->prepare($SQL);
$query -> execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);

header('Content-Type: application/json');
echo json_encode($result);

我的问题是user2值覆盖$ result数组中的user1值,有没有办法可以返回类似的内容:

[{"user1": {"id": "value", "name":"value"}, "user2": {"id": "value", "name":"value"}}]

这样每个用户都是用户键值内的一组新数据。

有关如何做到这一点的任何想法?我是PDO的新手。

1 个答案:

答案 0 :(得分:1)

您需要在查询中为它们提供不同的别名(列名称):

SELECT t.*, u1.name as name1, u2.name as name2
FROM tasks LEFT JOIN
     users u1 ON tasks.user1 = u1.id LEFT JOIN
     users u2 ON tasks.user2 = u2.id ;