Я следующие таблицы MySQL, которые, вероятно, связаны с этим запросом:Пытаясь выяснить, что запрос MySQL делает (не мое)
Table: user_follow
Columns: | Type:
-----------|---------
id | INT(11)
follower | INT(11)
user | INT(11)
subscribed | INT(11)
Идентификатор является идентификатором последующих, последователь является человек который следит за пользователем и подписывается, когда они следовали за ними. Последователь и пользователь будет идентификаторы людей в таблице пользователей:
Table: users
Columns: | Type:
----------|---------
id | INT(11)
username | INT(11)
Это не полная таблица пользователей, но это должно быть достаточно для любой этот запрос MySQL делает. Идентификатор в таблице пользователей - это идентификатор пользователя, а имя пользователя - это имя пользователя. Итак, вот запрос, который я пытаюсь выяснить, что он делает. Я считаю, что он пытается получить имя пользователя из базы данных пользователя:
SELECT `ufollower`.`id` AS follower_id, `ufollower`.`username` AS follower_name,
`ufollowed`.`id` AS user_id, `ufollowed`.`username` AS user_name
FROM `user_follow`
JOIN users ufollower ON `ufollower`.`id` = `user_follow`.`follower`
JOIN users ufollowed ON `ufollowed`.`id` = `user_follow`.`user`
WHERE `user_follow`.`user` = :p_id
Полный код, который я пытаюсь запустить, это (включает в себя запрос):
//Get people who this person is following
$following = $db->prepare("SELECT `ufollower`.`id` AS follower_id, `ufollower`.`username` AS follower_name, `ufollowed`.`id` AS user_id, `ufollowed`.`username` AS user_name FROM `user_follow` JOIN users ufollower ON `ufollower`.`id` = `user_follow`.`follower` JOIN users ufollowed ON `ufollowed`.`id` = `user_follow`.`user` WHERE `user_follow`.`user` = :p_id");
$following->bindValue(":p_id",$p_id,PDO::PARAM_STR);
$following->execute();
$following = $following->fetchAll(PDO::FETCH_ASSOC);
var_dump($following);
//If I do $following = $following->fetch(); and var_dump that, it returns "bool(false)" which I learned the other day that it couldn't do the query or there were no results found or something
Кроме того, я Я не эксперт в MySQL, поэтому, если бы вы могли дать ответ, который тоже мог бы работать, это было бы здорово. Я могу делать простые запросы, но когда дело доходит до соединения таблиц, я понятия не имею, что происходит.
Да, получение логической ложной верстки из операции выборки означает, что больше нет (или никогда не было) данных, доступных для выборки. –
Да, это кажется правильным. По-видимому, этот запрос выглядит так, как будто кто-то следит за человеком, а не за тем, за кем человек следит. – TheNytangel
Нечего делать, но когда вы связываете ID (целое число), используйте вместо этого флаг 'PDO :: PARAM_INT' – antoox