我有三個表稱爲product,product_category和category,其中product_category是連接表。PHP SQL - 連接三個表
如何在PHP中使用SQL連接這些表?
鏈接表只有productID鏈接到產品表和鏈接到該類別的catID。
我有三個表稱爲product,product_category和category,其中product_category是連接表。PHP SQL - 連接三個表
如何在PHP中使用SQL連接這些表?
鏈接表只有productID鏈接到產品表和鏈接到該類別的catID。
這樣的事情?
SELECT
*
FROM
product
INNER JOIN
product_category
ON product_category.productID = product.productID
INNER JOIN
category
ON category.catID = product_category.catID
您的查詢應該是這個樣子: 增加的需求,應該有一個productId參數和的categoryId從變量:
$query = "SELECT * FROM
product p
JOIN product_category pc ON p.id = pc.productId
JOIN category c ON c.id = pc. categoryId
WHERE p.id = {$productId}
AND c.id = {$categoryId}";
添加了有關PHP變量的要求@Dems作爲其他答案發表評論 – Nanne 2011-03-18 17:41:39
這是一個打開SQL注入攻擊的示例。請在使用此方法之前閱讀有關內容。我強烈建議您,如果任何參數都是由用戶提供的,請不要以此方式直接構建用於執行的SQL查詢。 – MatBailie 2011-03-18 17:45:30
這就是這樣一個小的blurb,請不要像這樣添加kneejerk反應。如果你事先檢查你的數值是否爲數字(爲什麼你會想要在查詢中這麼做?)或者做一些其他形式的清理,那麼你不會對SQL注入攻擊開放。 – Nanne 2011-03-18 19:03:32
好吧,但我怎麼能採取的產品和類別使用來自PHP變量。 – Chris 2011-03-18 17:38:17
首先,您需要查看如何使用PHP編寫預處理語句。這些可以讓您以安全的方式爲您的SQL代碼提供參數(不會被濫用)(查找SQL注入攻擊)。然後你需要添加一個WHERE子句,比如:* WHERE product.productID =:productID * – MatBailie 2011-03-18 17:41:53
http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – MatBailie 2011-03-18 17:42:57