Получить значения из запроса MySQL

0

Я работаю над приложениями для социальных сетей 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], но это не сработало

  • 0
    Как я понял тебе нужен псевдоним В твоем sql?
Теги:
xamarin

2 ответа

1
Лучший ответ

Попробуй это:

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
  • 0
    Я знаю, как это сделать, но что, если, например, мне нужен «id», $ p ['id'] может вернуть либо идентификатор из таблицы сообщений, либо идентификатор из таблицы пользователей, как мне указать, какую таблицу?
  • 1
    Затем сделайте это в запросе: выберите *, users.id AS uid, posts.id AS postId из сообщений INNER JOIN users ON users.id = posts.user_id WHERE posts.user_id =: userid
Показать ещё 8 комментариев
2

Не уверен, что это сработает для вас, но так как вас интересует только userId, почему бы вам просто не выбрать то, что вы хотите? Тогда массив $ result будет иметь только одну запись в наборе записей.

$sql = "SELECT p.user_id FROM posts AS P INNER JOIN users...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню