【问题标题】:Not displaying message when no records found未找到记录时不显示消息
【发布时间】:2018-03-10 17:52:09
【问题描述】:

由于某种原因,在查询数据库以获取选定范围时,以下内容未显示“未找到结果”错误消息,而是显示了表头和表尾。

    $result = mysqli_query($con,"SELECT * FROM tblRecords WHERE DATE(RecDate) = CURDATE() - INTERVAL 1 DAY ORDER BY RecDate DESC, RecTime DESC");

<?php

if (!$result) { echo("No results found for the selected view");
          } else ?>
          <table id="results">
<tr>
<th>Rec#</th>
<th>Date</th>
<th>Time</th>
<th>Reading</th>
</tr>
<?php ;
while($row = mysqli_fetch_array($result)) 
?>
<tr>

<td><?php echo($row['RecID']);?></td>
<td><?php echo(date("d/m/Y", strtotime($row['RecDate'])));?></td>
<td><?php echo(date("g:i A", strtotime($row['RecTime'])));?></td>
<td><?php echo($row['RecReading'] . $row['RecMeasure']);?></td>
</tr>
<?php
}
?>
<tr>
<td class="footer" colspan="4">- end of report -</td></tr>
</table>
<?php
mysqli_close($con);
?>

任何帮助都将不胜感激,因为理论上,这应该可以工作......不是吗? :-)

【问题讨论】:

  • 看看您是如何创建$result 可能会有所帮助
  • True @PatrickQ ...我已更新显示原点

标签: php arrays mysqli


【解决方案1】:

您可以使用此条件来检查查询中的行数

$result = mysqli_query($con,"SELECT * FROM tblRecords WHERE DATE(RecDate) = CURDATE() - INTERVAL 1 DAY ORDER BY RecDate DESC, RecTime DESC");

<?php

if (mysqli_num_rows($result) === 0) { 
    echo("No results found for the selected view");
} else {?>
<table id="results">
<tr>
<th>Rec#</th>
<th>Date</th>
<th>Time</th>
<th>Reading</th>
</tr>
<?php ;
while($row = mysqli_fetch_array($result)) 
?>
<tr>

<td><?php echo($row['RecID']);?></td>
<td><?php echo(date("d/m/Y", strtotime($row['RecDate'])));?></td>
<td><?php echo(date("g:i A", strtotime($row['RecTime'])));?></td>
<td><?php echo($row['RecReading'] . $row['RecMeasure']);?></td>
</tr>
<?php } ?>
<tr>
<td class="footer" colspan="4">- end of report -</td></tr>
</table>
<?php
mysqli_close($con);
?>

【讨论】:

  • 这与if (mysqli_num_rows($result) &lt; 1) { echo("No results found for the selected view");相比有什么优势或劣势,或者这是做同样事情的另一种方式? :-)
  • 不,两者都相同,因为结果永远不会为负,最小计数始终为 0,所以我更喜欢那个。
  • 感谢您的澄清 :-)
【解决方案2】:

$result 可能是一个结果集,但它可能为空。然而!$result 不会是真的。 mysql_query 的文档:

失败时返回FALSE。对于成功的SELECTSHOWDESCRIBEEXPLAIN 查询,mysqli_query() 将返回一个mysqli_result 对象。对于其他成功查询mysqli_query() 将返回TRUE。 (来源:http://php.net/mysqli_query

你应该与mysqli_num_rows(或类似的东西)核实

【讨论】:

  • 正确...对于 if 语句,我将其替换为 if (mysqli_num_rows($result) &lt; 1) { echo("No results found for the selected view");,现在可以正常工作:-) 谢谢@jakumi
猜你喜欢
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多