Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如果查询行为不正确_Php_Mysql - Fatal编程技术网

PHP如果查询行为不正确

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,

我在PHP中使用了一个if语句,如果查询为空,它不会运行PHP有效地隐藏网页的这一部分。这是我正在使用的if语句

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()谢谢