2010-03-16 32 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'; 

你顯然需要在URL查詢字符串傳遞的值來改變'23',讓每一個頁面列出了每個相關作者的書籍。

由於開始閱讀最佳實踐永遠不會太早,因此請注意,對於公共網站,將任何未經過清理的輸入包括到SQL查詢中是非常危險的。您可能需要從以下堆棧溢出的帖子就這個話題繼續讀下去:

+0

感謝您的幫助(含圖片!)。 ..我現在不打擾安全問題,因爲應用程序將在內部使用,這仍然是安全的嗎?另外,我一直在使用傳統的mysql代碼,比如'mysql_query'等,將其改爲'mysqli'會導致我參數錯誤。我在這個結構中有幾十個問題,需要很長時間才能使它適合黑客入侵? – Jess 2010-03-16 23:34:45

+0

是的,它確實需要一些時間才能使這些查詢不受黑客攻擊,但對於公共網站來說,這絕對是值得的。您可能希望檢查Google或堆棧溢出以查找「參數化查詢」。 – 2010-03-16 23:52:15

0

基本語法是 SELECT * FROM table WHERE column = value;

但是你真的需要學習更多的SQL,我建議通過sqlzoo教程。 http://sqlzoo.net/