使用一组Mysql结果作为PHP中的比较

时间:2012-03-10 22:08:30

标签: php mysql

这个问题很简单,但我不确定自己查找答案所涉及的术语。我所拥有的是一个包含我所有产品信息的MYSQL数据库。我想在产品页面上显示具有特定属性的产品的图像。我创建了这个SQL查询,它输出了我希望图像显示的产品的product_ids列表。但是,我不知道如何在页面本身中使用这组结果。

我目前有:

$cupwinnerids = mysql_query("SELECT product_id FROM `jos_vm_product_type_1` WHERE jos_vm_product_type_1.Cup_Winner ='Cup Winners';");
while($row = mysql_fetch_array($cupwinnerids))
  {
  echo $row['product_id'] . ",";
  }

这将输出正确的id,并在它们之间加上逗号。我想做的是用$ listofids =(...)之类的东西包装整个东西,然后我可以在产品页面中使用PHP文件:如果$ product_id在$ listofids中,那么......如果不是那么..我只是在理解如何使用这些选择的ID时遇到问题。如果我尝试直接输出列表,我只需要“数组”。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

问题可能是您尝试使用echo显示数组,而您应该使用print_r。

在你的情况下,你可以这样做:

$listofids = array();
$cupwinnerids = mysql_query("SELECT product_id FROM `jos_vm_product_type_1` WHERE jos_vm_product_type_1.Cup_Winner ='Cup Winners';");
while($row = mysql_fetch_array($cupwinnerids))
{
array_push($listofids, $row['product_id']);
}
print_r($listofids);

正如Ryan评论的那样,如果你想管理数组的值,你应该使用foreach循环,遍历数组,就像这样

foreach ($listofids as $id) {
echo $id . ", ";
}
// EDIT: you could also use echo implode($listofids,", ") which will do basically the same

如果你想要的是比较$ product_id是否在$ listofids我们in_array中,如果你要查找的值在数组中,则返回true,如果不是,则返回false:

if (in_array($product_id, $listofids)) {
echo "Product ID is in the List of Product ID's";
}
else {
echo "Product ID isn't in the List of Product ID's";
}

答案 1 :(得分:0)

为什么不将$ cupwinnerids返回到您的产品页面,然后执行类似......

的操作
while($row = mysql_fetch_array($cupwinnerids)) {
  if ($row['product_id'] == $product_id)
    // display your image
}

答案 2 :(得分:0)

听起来你最好修改退回产品的查询,以便它连接到jos_vm_product_type_1表 -

SELECT `jos_vm_product`.*, IF(`jos_vm_product_type_1`.`product_id` IS NULL, 0, 1) AS `winner`
FROM `jos_vm_product`
LEFT JOIN `jos_vm_product_type_1`
    ON `jos_vm_product`.`product_id` = `jos_vm_product_type_1`.`product_id`
    AND `jos_vm_product_type_1`.`Cup_Winner` ='Cup Winners'