簡體   English   中英

如何從 MySQL 以鍵和值對的形式返回數據

[英]How do I return data as a Key & Value pair from 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"
}

我可以通過循環遍歷表並將所有內容連接在一起,將其構建為 MySQL 中的字符串,然后在 JS 中解析它。 我知道。 但它看起來很亂,我知道在 PHP 中一定有一些內置的函數。 我只是不認識他們。

我的所有其他 PHP/MySQL 配對都在 PHP 中使用 mysqli_fetch_assoc 和 json_encode,因為它們不需要 JSON 密鑰來僅動態更改值。

最終的 JSON 對象是從 JavaScript 函數返回的,所以我很高興修復了從 JavaScript(或 jQuery)到 PHP,到 MySQL 過程,再到鏈中的任何地方。

如果您使用 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM