如何将数据作为Key& amp;来自MySQL的值对

时间:2017-12-16 11:34:48

标签: javascript php jquery mysql

我试图返回一个带有Key,Value对的JSON对象,这两个对象都是MySQL表中的单独列。

所以MySQL表看起来(简化为1000%)是这样的:

+-----------------+---------------------+
|      Email      |   ProfilePicture    |
+-----------------+---------------------+
| john@email.com  | https://someurl.com |
| jane@email.com  | https://foobar.com  |
| bobby@email.com | https://random.com  |
+-----------------+---------------------+

我想要一个像

这样的JSON对象
{
"john@email.com":"https://someurl.com",
"jane@email.com":"https://foobar.com",
"bobby@email.com":"https://random.com"
}

我可以通过循环遍历表并将所有内容连接在一起,然后在JS中解析它,从而在MySQL中将其构建为字符串。我知道。但它似乎很乱,我知道在PHP中必须有一些内置函数。我只是不了解他们。

所有其他PHP / MySQL配对都在PHP中使用mysqli_fetch_assoc和json_encode,因为他们不需要JSON Key只动态更改值。

最终的JSON对象是从JavaScript函数返回的,因此我很乐意修复从JavaScript(或jQuery)到PHP,再到MySQL过程的所有链接,然后再回过头来。

2 个答案:

答案 0 :(得分:3)

如果使用PDO连接数据库,则可以使用类似......

的内容
$query = $db->query("SELECT Email, ProfilePicture FROM users");
$data  = $query->fetchAll(PDO::FETCH_KEY_PAIR);
$out = json_encode($data);

PDO::FETCH_KEY_PAIR使用返回的第一列作为键,第二列作为值。

坚持使用mysqli

$result = $db->query("SELECT Email, ProfilePicture FROM users");
$data = [];
while ($row = $result->fetch_assoc()) {
    $data[$row['Email']] = $row['ProfilePicture'];
}
$out = json_encode($data);

MySQLi版本 - 略短......

$result = $db->query("SELECT Email, ProfilePicture FROM users");
$data = $result->fetch_all(MYSQLI_ASSOC);
$out = array_column($data, 'ProfilePicture', 'Email');
$out = json_encode($data);

答案 1 :(得分:0)

首先,您将查询database的结果。 可能你会得到两个数组$query1$query2

$query1 = "select email  from $table";
$query2 = "select ProfilePicture from $table";

第二:将两个数组与array_combine组合。 您将获得一个新的array keysvalues,其中第一个array $query1将成为关键,第二个$query2将是值

$array = array_combine($query1, $query2);

第三:将数组转换为json格式。

$newArray = json_encode($array);

就是这样。