[英]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.