我正在使用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";
}
}
答案 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']
会生成未定义的索引通知。)