繁体   English   中英

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

[英]Display message in PHP when the result of mysql query has no 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>";

尝试扭转你的mysql_num_rows ,并检查是否有>0 rows-

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>";}
$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>";
}

不太确定您要在这里做什么,但是似乎您可能还想简化查询。 尝试类似:

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>";
}

所以这是我的答案。

$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”消息。

谢谢大家的帮助..:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM