当mysql查询的结果没有值时,在PHP中显示消息

时间:2012-11-25 08:49:06

标签: php mysql return-value

我在PHP中有一个显示MySQL查询结果的表。

数据库表 item_em 具有数据库表 hypermarket_em 中可用的大型超市中可用项目的价格详细信息。有一些大型超市中没有的商品。因此,当我在表格中显示价格时,我希望那些没有价格的单元格 N / A

所以我的问题是我自己尝试了一个代码,当数据库表字段没有值时显示消息。但它不起作用,我也没有得到任何错误。任何想法都非常感激。谢谢。

  

这是我的代码

$res = mysql_query("SELECT h_id FROM hypermarket_em") or die(mysql_error());
echo"<tbody><tr>";
while($row = mysql_fetch_array( $res ))
{   
    $result = mysql_query("SELECT item_name FROM items_em WHERE h_id=".$row['h_id'])or die(mysql_error());
    while($drop_4 = mysql_fetch_array( $result ))
    {
         echo"<th scope=row>".$drop_4['item_name']."</th>";
         $rslt = mysql_query("SELECT price FROM items_em WHERE item_name='".$drop_4['item_name']."' and h_id=".$row['h_id'])or die(mysql_error());
         if (mysql_num_rows($rslt) == 0)
             echo"<td>N/A</td>";
         while($drop = mysql_fetch_array( $rslt ))
         {
             echo"<td>".$drop['price']."</td>";
         }
    }
}
echo"</tr></tbody>";

4 个答案:

答案 0 :(得分:1)

尝试撤消mysql_num_rows并检查您是否>行还有0

if (mysql_num_rows($rslt) > 0){
    while($drop = mysql_fetch_array( $rslt )){
      echo"<td>".$drop['price']."</td>";}
}
else{
     echo"<td>N/A</td>";}

编辑 -

我认为你想要做的就是这样 -

while($drop = mysql_fetch_array( $rslt )){
    if ($drop['price'] == ''){
      echo"<td>N/A</td>";}
    else{
      echo"<td>".$drop['price']."</td>";}

答案 1 :(得分:0)

$data = mysql_fetch_array( $res );
if (!empty($data)) {
   while($row = mysql_fetch_array( $res ))
   {   
      $result = mysql_query("SELECT item_name FROM items_em WHERE h_id=".$row['h_id'])or die(mysql_error());
      while($drop_4 = mysql_fetch_array( $result ))
      {
         echo"<th scope=row>".$drop_4['item_name']."</th>";
         $rslt = mysql_query("SELECT price FROM items_em WHERE item_name='".$drop_4['item_name']."' and h_id=".$row['h_id'])or die(mysql_error());
         if (mysql_num_rows($rslt) == 0)
             echo"<td>N/A</td>";
         while($drop = mysql_fetch_array( $rslt ))
         {
             echo"<td>".$drop['price']."</td>";
         }
      }
   }
} else {
   echo "<td>No record found</td>";
}

答案 2 :(得分:0)

不确定您在这里尝试做什么,但似乎您可能也希望简化查询。尝试类似:

SELECT
    *
FROM
    hypermarket_em h
    LEFT JOIN items_em i ON ( h.h_id = i.h_id );

使用此查询,您可以执行以下操作:

while($drop = mysql_fetch_array( $rslt )){
    echo"<td>" . ( empty( $drop['price'] ) ? 'N/A' : $drop['price'] ) . "</td>";
}

答案 3 :(得分:0)

所以这是我的答案。

$res = mysql_query("SELECT DISTINCT h_id FROM hypermarket_em") or die(mysql_error());
echo"<tbody><tr>";
while($row = mysql_fetch_array( $res ))
{   
    $result = mysql_query("SELECT item_name FROM items_em WHERE h_id=".$row['h_id'])or die(mysql_error());
    while($drop_4 = mysql_fetch_array( $result ))
    {
            echo"<th scope=row>".$drop_4['item_name']."</th>";
            $rslt = mysql_query("SELECT price FROM items_em WHERE item_name='".$drop_4['item_name']."' and h_id=".$row['h_id'])or die(mysql_error());
        while($drop = mysql_fetch_array( $rslt ))
        {
            echo"<td>".$drop['price']."</td>";
        }
    }
}
$res = mysql_query("SELECT DISTINCT h_id FROM hypermarket_em") or die(mysql_error());
while($row = mysql_fetch_array( $res ))
{
    $result = mysql_query("SELECT item_name FROM items_em WHERE h_id=".$row['h_id'])or die(mysql_error());
    if(mysql_num_rows($result)<=0)
        echo"<td>N/A</td>";
}
echo"</tr></tbody>";

我必须执行两次相同的查询,因为我想要订单中的商品名称和价格值。所以我首先打印项目名称,然后只打印价格或“N / A”消息。

谢谢大家的帮助.. :)