2010-03-16 2 views
1

Итак, вот моя ситуация. У меня есть таблица книг и таблица авторов. У автора может быть много книг ... На моем просмотре страницы авторов пользователь (вошедший в систему) может щелкнуть автора в связанной строке и быть направлена ​​на страницу, отображающую книги автора (собранные, как этот формат URI: viewauthorbooks.php?author_id=23), очень прямо вперёд ... Тем не менее, по моему запросу, мне нужно отображать книги только для автора, а не все книги, хранящиеся в таблице книг (как у меня сейчас есть). Поскольку я полный новичок, я использовал самые простые запрос о:MySQL: Ограничить вывод согласно соответствующему ID

SELECT * FROM books 

Это возвращает книги для меня, но возвращает каждое значение (книга) в базе данных, а не те, связанные с выбранным автором. И когда я нажимаю другого автора, для них отображаются одни и те же книги ... Я думаю, что все получают то, что я пытаюсь достичь, я просто не знаю, как выполнить запрос. Я предполагаю, что мне нужно начать использовать более сложные запросы, такие как INNER JOIN и т. Д. Любой, кто хочет помочь мне:

ответ

0

Вводится положение WHERE:

Предложение WHERE используется для извлечения только те записи, которые выполняют определенные критерии. В вашем случае, все, что вам нужно сделать, это:

SELECT * FROM tasks_tb WHERE author_id = '23'; 

Вы, очевидно, нужно изменить '23' с значением, переданным в URL строки запроса, так что каждая страница содержит список книг каждого соответствующего автора.

Поскольку никогда не слишком рано начинать читать о лучших практиках, обратите внимание, что для общедоступных веб-сайтов действительно опасно включать любой незащищенный вход в SQL-запрос. Вы можете дополнительно прочитать по этой теме из следующих сообщений о переполнении стека:

+0

Спасибо за вашу помощь (с картинками!). .. Я сейчас не беспокоюсь о проблемах с безопасностью, так как приложение будет использоваться внутри страны, будет ли это безопасно? Кроме того, я использую традиционный код mysql, такой как «mysql_query» и т. Д., Изменяя это на «mysqli», вызвало ошибки параметра. У меня есть десятки запросов в этой структуре, мне понадобится много времени, чтобы сделать его подходящим для взлома? – Jess

+0

Да, это займет некоторое время, чтобы сделать запросы взломанными, но это определенно стоит для общедоступного веб-сайта. Вы можете проверить Google или переполнение стека для «параметризованных запросов». –

0

Основной синтаксис: SELECT * FROM table WHERE column = value;

Но вам действительно нужно изучить больше SQL, я бы предложил пройти через учебник sqlzoo. http://sqlzoo.net/

Смежные вопросы