即使有条件,空MySQL字段时出错

时间:2015-11-23 09:08:46

标签: php mysql

当我点击我的网络应用程序中的项目时,它包含值,我没有收到任何错误,但是我在MySQL中创建了另一个带有空字段的项目,我点击了它,在我的网络应用程序中(PHP应用程序) ),所以我收到了这个错误:

  

未定义的变量:总计   第80行的C:\ wamp \ www \ architect \ projDetails.php

我有这个PHP代码:

$id = $_REQUEST['id'];
$sql = "SELECT (SELECT SUM(total_pay) FROM workers) total,workers. * FROM workers WHERE projects_id = ".$id." ORDER BY date_of_pay DESC";
$stmt = mysqli_query($con, $sql) or die($sql."<br/><br/>".mysqli_error($con));

这里有第80行附近的html和php代码:

 <tr>

      <?php while($rows = mysqli_fetch_array($stmt)){ $total = 0; ?>
    <tr>
    <?php if($rows['total']!=0){
        $total = $rows['total'];
    }
    else {
        $total = "غير متوفر";
    }
        ?>
      <td align="center"><?php echo $rows['total_pay']?></td>
      <td align="center"><?php echo $rows['date_of_pay']?></td>
      <td align="center"><?php echo $name['project_name'] ?></td>
      <td align="center"><!--<input class="imgClass_insert" type="submit" name="submit1" value="" />-->
        <input class="imgClass_dell" type="submit" onClick="return confirm('Are you sure you want to delete?')" name="delete_workers" value=""/>


    </td>
  </tr>

    </tr>
  <?php } ?>
  <tr>    

    <td colspan="3">مجموع تكاليف العمال في مشروع <?php echo $name['project_name']?></td>
    <td align="center"><?php echo $total ?></td>
  </tr>

所以当total为空时,我得到错误,当它不为空时,我没有得到任何错误,那么这里有什么问题?

3 个答案:

答案 0 :(得分:0)

尝试以下内容。

echo isset($total)? $total: 0;

答案 1 :(得分:0)

您的变量$total目前仅在while块中存活。您将在</tr><?php } ?><tr>语句处退出此块。这意味着您的变量不再在下面的代码行<td align="center"><?php echo $total ?></td>中分配。要在while块下面使用此total变量,请在while块上方添加变量的声明和初始化,例如:

<tr>
    <?php $total = 0;
          while($rows = mysqli_fetch_array($stmt)){ ?>
    <tr>
        <?php if($rows['total']!=0){      <-- Check this comparison (described below)
            $total = $rows['total'];
        }
        else {
            $total = "غير متوفر";
        }
        ?>
        <td align="center"><?php echo $rows['total_pay']?></td>
        <td align="center"><?php echo $rows['date_of_pay']?></td>
        <td align="center"><?php echo $name['project_name'] ?></td>
        <td align="center"><!--<input class="imgClass_insert" type="submit" name="submit1" value="" />-->
            <input class="imgClass_dell" type="submit" onClick="return confirm('Are you sure you want to delete?')" name="delete_workers" value=""/>
        </td>
    </tr>
</tr>
<?php } ?>
<tr>    
    <td colspan="3">مجموع تكاليف العمال في مشروع <?php echo $name['project_name']?></td>
    <td align="center"><?php echo $total ?></td>
</tr>

希望这对你有用。上面代码中带注释的行将比较字符串和整数值。请注意,$rows['total']将包含String类型的值。您的比较是针对整数值0。 PHP不应该抛出错误或警告,但它可能会在此if语句中产生不需要的结果。 (更多信息:http://php.net/manual/de/language.types.type-juggling.php

答案 2 :(得分:0)

如果我们从DB获取任何数据,那么它只会进入while循环。现在在while循环中只有$ total定义。 如果我们在while循环之外定义它,默认值将解决问题

<tr> <?php 
    $total = "0";
    while($rows = mysqli_fetch_array($stmt)){ $total = 0; 
      if($rows['total']!=0){
          $total = $rows['total'];
      }
      //.....
      //.....
    } ?>
</tr>
<tr>
    <td colspan="3">some text <?php echo $name['project_name']?></td>
    <td align="center"><?php echo $total ?></td>
</tr>

谢谢