试图找到另一个简单的答案,但只找到复杂的例子。
我正在尝试简单地查询一个表,如果有结果要显示然后循环它们,如果没有则显示消息 - 不幸的是所有的例子我都能找到'fetch'作为while循环的一部分,而不是之前,所以我想做:
$stm = $PdoObj->prepare("SELECT * FROM NEWS_articles");
$stm ->execute();
$results = $stm ->fetch();
if($results==null){
echo "<p>No dice, try other criteria</p>";
}else{
foreach($results as $row){
echo $row["articleName"];
}
}
以下问题接近于我正在努力实现的目标,但从未得到令人满意的回答:Is it possible to check if pdostatement::fetch() has results without iterating through a row?
非常感谢任何帮助!
由于
鲍勃
答案 0 :(得分:3)
您无需fetch()
,只需fetchAll()
。
答案 1 :(得分:2)
正如你的常识所提到的fetchAll
。如果没有任何结果,它将返回一个空数组:
$results = $stm->fetchAll();
if(empty($results))//or if(!$results) or if(count($results)==0) or if($results == array())
{
echo 'Nothing found';
}
else
{
foreach($results as $result)
{
//do stuff
}
}
获取已返回行数的官方方法是rowCount()
:
$stm->execute();
if($stm->rowCount() == 0)
{
echo 'Nothing found';
}
else
{
//do your stuff
}
如果您已经调用fetchAll
,则不需要这样做,因为此结果可用于确定结果集的大小。
答案 2 :(得分:0)
而不是fetch()
,请使用fetchAll()
。
fetchAll
- 返回包含所有结果集行的数组