Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用一组Mysql结果作为比较_Php_Mysql - Fatal编程技术网

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

在PHP中使用一组Mysql结果作为比较,php,mysql,Php,Mysql,这个问题很简单,但我不确定自己查找答案所涉及的术语。我拥有的是一个MYSQL数据库,其中包含我所有的产品信息。我想为具有特定属性的产品在产品页面上显示一个图像。我创建了这个SQL查询,它为我希望图像显示的产品输出产品ID列表。但是,我不知道如何在页面本身中使用这组结果 我目前有: $cupwinnerids = mysql_query("SELECT product_id FROM `jos_vm_product_type_1` WHERE jos_vm_product_type_1.Cup_W

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

我目前有:

$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,ID之间带有逗号。我想做的是用$listofids=(…)这样的东西包装整个内容,然后我可以在产品页面PHP文件中使用:如果$product_id在$listofids中,那么。。。如果没有,那么。。。我只是在理解如何使用这些ID时遇到了一个问题。如果我试图直接输出列表,我只会得到“array”。任何帮助都将不胜感激

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

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

问题可能是您试图使用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\u id是否在\u数组中的$listofids us中,则如果要查找的值在数组中,则返回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";
}

听起来您最好修改查询以返回产品,这样它就可以连接到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'

我假设你的图像是存储在文件系统中的?它们都在同一个目录中吗?您是否存储了带有产品标识的图像的URL?您好,我遇到的问题不是图像的生成,而是在一个我可以简单地说echo$cupwinnerids并获取ID列表而不是“数组”的状态下获取优胜者的产品ID。谢谢你的回答。好的,我误解了这个问题。对不起,使用数组有什么问题?将foreach与数组一起使用可能是最简单的方法?谢谢Ryan。我没有考虑过这一点。你的回答正是我需要的。它现在工作正常:-)