Php 带有if/else语句的PDO select查询无法正常工作

Php 带有if/else语句的PDO select查询无法正常工作,php,if-statement,pdo,Php,If Statement,Pdo,下面是一个非常基本的搜索功能的脚本 从某种意义上说,它工作得很好,结果在任何时候都会被获取,但问题是当查询返回零结果时,没有结果!没有出现。相反,页面是空白的 $search_query = $_GET['search']; $search_query = htmlentities($search_query); $word = "%$search_query%"; $search=$sth->con->prepare("SELECT id, firstname, lastna

下面是一个非常基本的搜索功能的脚本

从某种意义上说,它工作得很好,结果在任何时候都会被获取,但问题是当查询返回零结果时,没有结果!没有出现。相反,页面是空白的

$search_query = $_GET['search'];
$search_query  = htmlentities($search_query);
$word = "%$search_query%"; 

$search=$sth->con->prepare("SELECT id, firstname, lastname FROM users WHERE
firstname LIKE ? OR
lastname LIKE ?");

$search->bindValue(1, $word, PDO::PARAM_STR);       
$search->bindValue(2, $word, PDO::PARAM_STR);   
$search->execute();

    $results = $search->fetchAll();

foreach ($results as $row) {
$firstname = $row["firstname"];
$lastname = $row["lastname"];

       if (!(count($results) == 0)) {  
?>

       <div id="foo">Here are your results</div>
<?php
        } else {

       <div id="bar">No results!</div>
<?php
        }
}
?>

我在这里遗漏了什么?

如果没有结果,foreach将永远不会进入身体。您需要在foreach周围放置if:


如果没有结果,foreach将永远不会进入身体。您需要在foreach周围放置if:

你的伯爵找错地方了。如果没有结果,foreach循环内容将永远不会激发

你想要这样的东西:

<?php
if (count($results)) {
    echo '<div id="foo">Here are the results</div>';
    foreach ($results as $row) {
        // do stuff with row
    }
} else {
    echo '<div id="bar">No Results!</div>';
}
或者,由于非空数组是真实的:

<?php
if ($results) {
    echo '<div id="foo">Here are the results</div>';
    foreach ($results as $row) {
        // do stuff with row
    }
} else {
    echo '<div id="bar">No Results!</div>';
}
你的伯爵找错地方了。如果没有结果,foreach循环内容将永远不会激发

你想要这样的东西:

<?php
if (count($results)) {
    echo '<div id="foo">Here are the results</div>';
    foreach ($results as $row) {
        // do stuff with row
    }
} else {
    echo '<div id="bar">No Results!</div>';
}
或者,由于非空数组是真实的:

<?php
if ($results) {
    echo '<div id="foo">Here are the results</div>';
    foreach ($results as $row) {
        // do stuff with row
    }
} else {
    echo '<div id="bar">No Results!</div>';
}
将foreach循环放在第一个if块中。如果没有返回任何行,则foreach没有可迭代的内容

if (count($results))
{  

    foreach ($results as $row)
    {
        $firstname = $row["firstname"];
        $lastname = $row["lastname"];

        echo '<div id="foo">Here are your results</div>';
    }
}
else
{
    echo '<div id="bar">No results!</div>';
}
编辑: 我稍微修改了您的代码,这样它就不会进出php块,并且更易于阅读。

将foreach循环放在第一个if块中。如果没有返回任何行,则foreach没有可迭代的内容

if (count($results))
{  

    foreach ($results as $row)
    {
        $firstname = $row["firstname"];
        $lastname = $row["lastname"];

        echo '<div id="foo">Here are your results</div>';
    }
}
else
{
    echo '<div id="bar">No results!</div>';
}
编辑: 我稍微修改了你的代码,这样它就不会进出php块,并且更容易阅读