PHP如果查询行为不正确
我在PHP中使用了一个if语句,如果查询为空,它不会运行PHP有效地隐藏网页的这一部分。这是我正在使用的if语句PHP如果查询行为不正确,php,mysql,Php,Mysql,我在PHP中使用了一个if语句,如果查询为空,它不会运行PHP有效地隐藏网页的这一部分。这是我正在使用的if语句 if(!empty($result4)){ } 当用于从整个结果中隐藏单个空行时,它在其他地方工作得很好,但当为整个查询运行时,它不起作用 这是整个php代码,如果(!empty($result4)){如果查询为空,则不应发生,但它是空的 <?php if(!empty($result4)){ printf('<h2>%s News' . PHP_EOL,
if(!empty($result4)){
}
当用于从整个结果中隐藏单个空行时,它在其他地方工作得很好,但当为整个查询运行时,它不起作用
这是整个php代码,如果(!empty($result4)){如果查询为空,则不应发生,但它是空的
<?php
if(!empty($result4)){
printf('<h2>%s News' . PHP_EOL, $row['name']);
$sLastStory = '';
foreach ($result4 AS $row4)
{
$sStory = $row4['headline'] . $row4['story'];
if (strcasecmp($sStory, $sLastStory) != 0)
{
if (!empty($sLastStory))
{
}
$sLastStory = $sStory;
printf('<h3>%s</h3>' . PHP_EOL, $row4['headline']);
printf('<h4>%s</h4>' . PHP_EOL, $row4['Displaydate']);
printf('<p>%s</p>' . PHP_EOL, $row4['story']);
}
if(!empty($row4['url'])){
printf('
<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s - Credit - %s" >
<img src="/images/%s%s-thumb.jpg" style="max-height: 230px; max-width: 230px" alt="%s"/></a>' . PHP_EOL, $row4
['url'], $row4['alt'], $row4['headline'], $row4['description'],$row4['credit'], $row4['url'], $row4['alt'],
$row4['alt'] );
}
}
printf('
<br>
<hr>
<a class="bloglink" href="parknews.php?park_id=%s">See all %s news</a></li>' . PHP_EOL, $park_id, $row
['name']);
}
?>
谢谢如果查询成功,
PDO::query()
将返回a,即使未选择任何行。由于$result4
包含PDO语句
,因此它不是空的
检查返回行数的更好方法是:
如果查询成功,
PDO::query()
将返回a,即使未选择任何行。由于$result4
包含PDO语句
,因此它不是空的
检查返回行数的更好方法是:
您对
empty()
函数的具体理解是什么?我想您认为它应该告诉您查询是否有结果。它不是这样做的
如果变量(在本例中为$result4
)为null
或包含其他一些“空”值,则empty()
的作用是返回true
记录集对象不是“空”值,不管它得到多少条记录
在这种情况下,您可能希望使用的是
if($result4->rowCount() > 0)
有关详细信息,请参阅PHP手册
empty()
只有在您期望查询完全失败时才有用,例如查询无效或数据库连接中断。在这种情况下,$result4
将为null
。但是您也会有PDO错误,您可以使用这些错误来处理,而不是检查记录集对象是否为空
希望这能有所帮助。您到底理解
empty()
函数要做什么?我想您认为它应该告诉您查询是否有结果。它不是这样做的
如果变量(在本例中为$result4
)为null
或包含其他一些“空”值,则empty()
的作用是返回true
记录集对象不是“空”值,不管它得到多少条记录
在这种情况下,您可能希望使用的是
if($result4->rowCount() > 0)
有关详细信息,请参阅PHP手册
empty()
只有在您期望查询完全失败时才有用,例如查询无效或数据库连接中断。在这种情况下,$result4
将为null
。但是您也会有PDO错误,您可以使用这些错误来处理,而不是检查记录集对象是否为空
希望这会有所帮助。如果没有匹配的行,查询结果也不会为空。它可能为空或有其他内容,因此您的条件
如果(!empty($result4))
将永远不会满足。您应该检查是否返回了num_rows
if($result4->rowCount() > 0)
如果没有匹配的行,查询结果也永远不会为空。它可能为null或有任何其他内容,因此您的条件
如果(!empty($result4))
将永远不会满足。您应该检查是否返回了num_rows
if($result4->rowCount() > 0)
empty不应在此处工作。如果sql语句未返回任何结果,则PDO::query方法仍将返回一个对象:PDO语句。但您可以使用rowCount查看语句是否为空。empty不应在此处工作。如果sql语句未返回任何结果,则PDO::query方法仍将返回一个对象:PDO语句。但您可以使用我们检查行数以查看您的语句是否为空。这里可能有很多选择来
empty()
空()
确定变量是否为空。如果变量不存在或其值等于FALSE,则视为空。如果变量不存在,则empty()不会生成警告。
要解决这个问题,您需要检查查询返回的行数,因为如果没有错误,它将返回true
rowCount();
看看这里
我希望这能有所帮助:)这里可能有很多选择
empty()
空()
确定变量是否为空。如果变量不存在或其值等于FALSE,则视为空。如果变量不存在,则empty()不会生成警告。
要解决这个问题,您需要检查查询返回的行数,因为如果没有错误,它将返回true
rowCount();
看看这里
我希望这能有所帮助:)试试这个
if (is_array($result4) && sizeof($result4)>0) {
// your code here!
}
或
马科斯试试这个
if (is_array($result4) && sizeof($result4)>0) {
// your code here!
}
或
Marcos什么是空结果?没有返回行?什么是空结果?没有返回行?您需要澄清您的解释。查询的结果可以是空的(没有行),但返回的PDOStatement对象永远不会满足
empty()!=false
您需要澄清您的解释。查询的结果可以是空的(没有行),但返回的PDOStatement对象永远不会满足empty()!=false
这工作非常好。这是我的错,我对PHP非常陌生,但现在我知道如何使用rowCount()谢谢这很好。这是我的错,我对PHP很陌生,但现在我知道如何使用rowCount()谢谢