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块,并且更容易阅读