PHP PDO如果在搜​​索中找不到结果,则显示消息

时间:2016-05-18 14:47:28

标签: php mysql pdo

我在尝试执行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>

例:
 如果用户搜索关键字,但未找到该关键字的结果,我会收到一条消息“未找到结果”

3 个答案:

答案 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';
}