使用PDO& amp;搜索数据库PHP,while语句不显示echo

时间:2017-08-23 13:47:09

标签: php mysql pdo

我正在使用PDO向我的网站添加搜索输入和按钮,我的其他声明有效,我收到“没有结果”#39;然而我的while声明似乎没有回应。我错过了什么,或者我在代码中写错了什么?

if(isset($_POST['submit'])){
    $search = $_POST['search'];
    $articles = $db->prepare("SELECT * FROM articles WHERE headline = :search");
    $articles->execute(array(':search' => $search));

    if($articles -> rowCount() > 0) {
            while ($rows = $articles->fetchAll(PDO::FETCH_ASSOC)){
                   $headline = $rows['headline'];
                   echo "headline: $headline<br>";
                  }
    } else{
        echo "No Results";
    }
}

1 个答案:

答案 0 :(得分:0)

你使用了错误的获取方法。

while ($rows = $articles->fetchAll(PDO::FETCH_ASSOC)) { ...

fetchAll提取所有行。所以$rows是一个行数组,而不是一行。因此,循环只会执行一次,并且$rows['headline'];不会存在。

只需使用fetch代替fetchAll

或者,如果您仍想使用fetchAll,则可以调用一次,然后使用foreach循环迭代结果。

$rows = $articles->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
    $headline = $row['headline'];
    echo "headline: $headline<br>";
}

无论哪种方式都应该这样做。

您应该将错误报告设置为在开发服务器上显示警告和通知,以便PHP可以告知您这样的问题。 ($rows['headline']会生成未定义的索引通知。)