我有三个表称为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