我已经将PHP变量$ accountnumber设置为查看其个人档案页面的用户。在页面上,我用数据库填充了用户信息的一个块,并且我有一个我们拥有的所有产品的列表,并且我希望在每个客户旁边放置一个复选标记,方法是分配一个类给它。如何显示SQL表中的所有记录并将这些记录与另一个表进行匹配?
这里是我的表:
products
id | name | url | weight
100 p1 p1.html 1
101 p2 p2.html 2
102 p3 p3.html 3
103 p4 p4.html 4
104 p5 p5.html 5
105 p6 p6.html 6
products_accounts
account_number | product_id
0000001 100
0000001 104
0000001 105
0000002 101
0000002 103
0000002 104
0000002 105
0000003 100
0000003 102
我尝试了LEFT OUTER JOIN,但无法确定$ ACCOUNTNUMBER匹配的products_accounts表的ACCOUNT_NUMBER特定的product_id。我能够做到这一点的唯一方法是添加一个WHERE语句是这样的:
WHERE products_acccounts.account_number = '$accountnumber'
它给适当类的产品,但只显示出他们,而不是所有的产品。
这里是我的代码:
$sql ="
SELECT
products.id,
products.name,
products.url,
products_accounts.account_number
FROM
products
LEFT OUTER JOIN
products_accounts
ON
products.id = products_accounts.product_id
";
$sql .="
GROUP BY
products.id
ORDER BY
products.weight
";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
echo '<span class="'; if($row['account_number'] == '$accountnumber')
{ echo'product_yes">'; } else { echo 'product_no">'; }
echo '<a href="' . $row['url'] . '">' . $row['name'] . '</a><br /></span>';
}
如果客户有不同的P2和P5所有的产品,它应该显示是这样的:
✓P1
P2 ✓P3 ✓P4 P5 ✓P6
我对此感觉良好! :)而我是对的!你是对的!我复制并粘贴到我的文本编辑器中,只需要修复三件事情即可使用! _1。修复了印刷错误 - 复数“rowproducts”以匹配while语句......_ _2。在“WHERE account_number ='$ accountnumber'AND product_id ='$ product_id'”......中添加了一个单引号......_ _3.将$ class更改为我已经设置并添加了“ } else {$ class ='product_no';} _ – nitsuj
我知道你会修复一个类,不确定是否第二个修复是必要的,因为它对我来说总是可以正常工作,但是有时候MySQL可能会很时髦!第一次编辑,那就是我试图快速打字,并在我工作时像我不在这个网站:) – bowlerae
是的,这是必要的。没有它,一切都被检查。我尝试左外部之前的第一次尝试join是为了做这个方法 - 在while语句中加入一个查询,但是我没有把它做得很正确,所以我认为这个方法是错误的。谢谢你清理它! – nitsuj