它获取网址的名称,找到ID并使用它来查找与此ID相关联的产品。
有没有更好的方法来写这个?说得更好我的意思是表现。我不知道是否可以合并这两个查询以获得更好的性能。
$cname = mysql_real_escape_string($_GET["c"]);
$row = mysql_fetch_assoc(mysql_query("SELECT id FROM companies WHERE name = '$cname' LIMIT 1"));
$cID = $row['id'];
$products = mysql_query("SELECT name FROM products WHERE company_id = '$cID' " );
while($product = mysql_fetch_assoc($products)) {
echo $product['name'].'<br>';
}
答案 0 :(得分:4)
SELECT c.id, p.name
FROM companies c
INNER JOIN products p ON p.company_id = c.id
WHERE c.name = '$cname'
答案 1 :(得分:1)
只需使用简单的连接:
SELECT p.name FROM products p, companies c
WHERE c.id = p.company_id
AND c.name = '<COMPANY NAME>';
只要公司名称是唯一的,那么您就不会遇到任何问题。
答案 2 :(得分:1)
为了安全起见,您可以(应该)考虑参数化查询。见these results
答案 3 :(得分:0)
当然,您可以将它们合并为一个:
SELECT products.name
FROM products
JOIN companies
ON products.company_id = companies.id
WHERE companies.name = '$cname'
然而,这在第一个查询中丢失了LIMIT - 你会期望达到这个吗?
答案 4 :(得分:0)
你可以这样做:
SELECT p.name FROM products p JOIN companies c ON (p.company_id = c.id) WHERE c.name = '$cname'