我在尝试执行MySQL“LIKE”查询后没有找到搜索结果时,尝试设置“未找到结果”消息
我在下面有以下代码:
我有一个if语句只是为了测试一个错误消息是否有效,但我似乎得到了else语句'找到'的输出
<table class="center"> <!-- Creating a table with the class of 'center' -->
<!-- SEARCH FORM -->
<?php
$KEYWORD = $_POST['keyword'];
$stmt = $conn->prepare("SELECT DISTINCT dog_park_name FROM dog_park.items WHERE dog_park_name LIKE '%{$KEYWORD}%'");
$stmt->execute();
for($i=0; $row = $stmt->fetch(); ){
$_SESSION["KEYWORD".$i] = $row[0];
if(empty($stmt))
{
echo 'Nothing found';
}
else
{
echo 'found';
}
?>
<!-- DISPLAY RESULTS -->
<tr> <!-- Adding the first table row -->
<th>Dog Park</th> <!-- Adding the second table header -->
</tr>
<tr> <!-- Adding the second table row -->
<td><a href="individual_item_page.php?keyword='<?php echo $row[$i] ?>' " ><?php echo $row[$i] ?></a></td> <!-- Add the second cell on the second row -->
</tr>
<?php } ?>
</table>
例:
如果用户搜索关键字,但未找到该关键字的结果,我会收到一条消息“未找到结果”
答案 0 :(得分:1)
您的if结构应该显示&#39; found&#39;因为您的查询已成功执行,在这种情况下,您可以计算行以确定此问题:
if($stmt->rowCount() == 0)
{
echo 'Nothing found';
}
else
{
echo 'found';
}
答案 1 :(得分:1)
让迈克布兰特的答案恰到好处:
value={String.fromCharCode(156)}
换句话说,您总是有查询结果来判断您是否有任何结果。
答案 2 :(得分:0)
我不打算解决您当前代码的SQL注入问题。您需要修复它,可能使用准备好的语句中的参数,但这是另一个主题。
我还会说你的KEYWORD.$i
方法是反模式。为什么不在$_SESSION['KEYWORD']
下使用数字索引数组?
$_SESSION['KEYWORD'] = array();
$stmt = $conn->prepare("SELECT DISTINCT dog_park_name FROM dog_park.items WHERE dog_park_name LIKE '%{$KEYWORD}%'");
if($stmt) {
$result = $stmt->execute();
if($result) {
while($row= $stmy->fetch() {
$_SESSION['KEYWORD'][] = $row[0];
}
}
}
if(count($_SESSION['KEYWORD']) === 0) {
echo 'Nothing found';
} else {
echo 'found';
}