Я работаю над приложениями для социальных сетей Xamarin.Forms. Я пытаюсь захватить сообщения, подключенные к пользователям, чтобы я мог отображать имя пользователя плаката.
Я хватаю сообщения, используя:
$sql = "SELECT * FROM posts AS P INNER JOIN users AS U ON U.id = P.user_id WHERE P.user_id=:userid";
$results = DB::query($sql, array(':userid' => $target_id));
Использование print_r
отображает его как:
Array ([0] => Array ([id] => snip [0] => snip [user_id] => snip [1] => snip [body] => 56565 [2] => 56565 [data] => 0 [3] => 0 [timestamp] => 2018-03-22 00:00:00 [4] => 2018-03-22 00:00:00 [type] => 1 [5] => 0 [ комментарии] => 0 [6] => 0 [users] => [7] => [8] => snip [имя_пользователя] => username_test [9] => username_test [пароль] => snip [10] => snip [user_password] => [11] => [email] => snip [12] => snip [name] => Joe [13] => Joe [bio] => Hello World Test Print [14] => Привет World Test Print [день рождения] => 2001-05-30 00:00:00 [15] => 2001-05-30 00:00:00 [пол] => 0 [16] => 0 [created] => 2018-03-25 20:29:44 [17] => 2018-03-25 20:29:44))
Я использую для выполнения результатов, используя что-то вроде ниже, прежде чем добавить соединение:
foreach($results as $p) {
$username = $p[username']
}
Но теперь я не понимаю, как получить что-то от пользователей или сообщений, например. Если мне нужно получить идентификатор пользователя, как я могу указать "id" от пользователей, а не "id" из сообщений и случайно получить идентификатор сообщения.
Я попробовал что-то вроде $ p [users => username], но это не сработало
Попробуй это:
SELECT * FROM posts
INNER JOIN users
ON users.id = posts.user_id
WHERE posts.user_id=:userid
В инструкции foreach отсутствуют кавычки и закрывающая точка с запятой:
foreach($results as $p) {
$username = $p['username'];
}
Чтобы получить однозначные идентификаторы:
SELECT *, users.id AS uid, posts.id AS postId
FROM posts
INNER JOIN users ON users.id = posts.user_id
WHERE posts.user_id=:userid
Чтобы получить количество символов в одном запросе:
SELECT *, users.id AS uid, posts.id AS postId,
COUNT(L.likes) AS likeCount
FROM posts
INNER JOIN users ON users.id = posts.user_id
LEFT JOIN like AS L ON L.post_id = P.id
WHERE posts.user_id=:userid
Не уверен, что это сработает для вас, но так как вас интересует только userId, почему бы вам просто не выбрать то, что вы хотите? Тогда массив $ result будет иметь только одну запись в наборе записей.
$sql = "SELECT p.user_id FROM posts AS P INNER JOIN users...