我有以下查询:
$myquery = mysql_query("SELECT p.name, GROUP_CONCAT(m.name) as products
FROM access as pm
INNER JOIN seller as p on p.id = pm.id_seller
INNER JOIN products as m on m.id = pm.id_product
WHERE p.id = '".$_COOKIE['id_seller']."'");
返回给我这个数组:
Array (
[0] => Seller Name [name] => Seller Name
[1] => Product1 [products] => Product1
);
我应该如何正确查询数据库?感谢我有3张桌子(产品,访问和卖家)。我想要实现的是将一个或多个产品归属(访问)给卖家。
我的下拉列表如何填充代码看起来像?
<?php
echo'<select name="productaccess">';
foreach($myquery as $product) {
echo'<option value="'.$product.'">'.$product.'</option>';
}
echo'</select>';
?>
谢谢!
答案 0 :(得分:1)
如果您希望产品仅用于一个卖家,则根本不需要分组。只需列出产品名称:
$myquery = mysql_query("SELECT m.name
FROM access as pm
INNER JOIN seller as p on p.id = pm.id_seller
INNER JOIN products as m on m.id = pm.id_product
WHERE p.id = '".$_COOKIE['id_seller']."'");
现在$myquery
只是一个资源标识符,而不是结果,因此您可以使用mysql_fetch_array()
获取后者:
while($row=mysql_fetch_array($myquery)) {
echo'<option value="'.$row['name'].'">'.$row['name'].'</option>';
}
答案 1 :(得分:0)
GROUP_CONCAT与GROUP BY子句一起使用,该子句不存在。在您的SQL中添加'GROUP BY p.name'。这将使上面的SQL返回单行,卖家名称和产品名称以逗号分隔。然后将产品名称分解为一个数组,然后将其输入到foreach循环中。