#php #mysql #json
#php #mysql #json
Вопрос:
У меня возникли проблемы с добавлением данных, возвращенных из таблицы MySQL, в объект PHP JSON. Это готовый объект, и он отлично работает сам по себе. Что я хотел бы сделать, так это добавить дополнительные данные к этому объекту.
$profileData = '{
"uid": "'.$uid['id'].'",
"username": "'.$user.'",
"cover": "'.$userData['profile_cov'].'",
"propic": "'.$userData['profile_pic'].'",
"fullName": "'.$userData['full_name'].'",
"about": "'.$userData['about'].'",
"relationship": "'.$userData['relationship'].'",
"location": "'.$userData['location'].'",
"work": "'.$userData['work'].'",
"sexPref": "'.$userData['sex_pref'].'",
"edu": "'.$userData['education'].'",
"hometown": "'.$userData['hometown'].'",
"isFollowing": "'.$isFollowingResult.'",
"areFriends": "'.$areFriendsResult.'"
}';
Это данные, которые я хотел бы добавить к вышеуказанному объекту. Как я могу это сделать?
$getPosts = "SELECT `author`, `access`, `post`, `posted` FROM `posts` WHERE `author` = '$userData[username]' AND `access` = 'Public' ORDER BY `posted` DESC";
$postResults = $cnct->query($getPosts);
$rows = array();
while($usrPosts = $postResults->fetch(PDO::FETCH_ASSOC)) {
$rows[] = $usrPosts;
}
$data = array('Posts' => $rows);
echo json_encode($data);
Пример вывода запроса в формате JSON:
{"Posts":[{"author":"Elitis","access":"Public","post":"Test 4","posted":"2014-06-20 14:02:09"}]}
Комментарии:
1. Можете ли вы привести пример вывода, который вы получаете из этого запроса к базе данных / вывода JSON? Если структуры данных одинаковы, вы должны просто иметь возможность
array_merge()
объединять два массива вместе, а затем кодировать это. Если они не имеют одинаковой структуры данных, вам нужно сделать их одинаковыми, затем выполните первый шаг выше.2. Обновленный OP. Это то, что вы искали? @scrowler
Ответ №1:
Не создавайте JSON вручную, это очень плохой подход, и ваш код однажды сломается
$profileData = array(
'uid'=> $uid['id'],
'username'=>$user,
'cover'=>$userData['profile_cov'],
'propic'=>$userData['profile_pic'],
'fullName'=> $userData['full_name'],
'about'=> $userData['about'],
'relationship'=> $userData['relationship'],
'location'=> $userData['location'],
'work'=> $userData['work'],
'sexPref'=> $userData['sex_pref'],
'edu'=> $userData['education'],
'hometown'=> $userData['hometown'],
'isFollowing'=> $isFollowingResult,
'areFriends'=> $areFriendsResult
);
Тогда очень легко добавить данные:
profileData['Posts'] = $rows;
echo json_encode($profileData);
Комментарии:
1. Что, в частности, делает создание JSON вручную плохой практикой? Кроме того, используя этот подход, как мне получить доступ к posts на стороне клиента? x.Posts.post?
2. @Azrael это плохая практика, потому что PHP имеет встроенную функцию для обработки этого за вас, И хотя эта функция будет постоянно обновляться в соответствии с текущими стандартами, исправлениями ошибок, проблемами и т. Д., Ваши пользовательские функции не будут (потому что вы не захотите!).). Лучше всего полагаться
json_encode()
здесь