我试图返回一个带有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过程的所有链接,然后再回过头来。
答案 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
keys
和values
,其中第一个array
$query1
将成为关键,第二个$query2
将是值
$array = array_combine($query1, $query2);
第三:将数组转换为json格式。
$newArray = json_encode($array);
就是这样。