0

试图找到另一个简单的答案,但只找到复杂的例子。

我试图简单地查询一个表,如果有结果要显示然后循环遍历它们,如果没有则显示一条消息 - 不幸的是,我可以在 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"];
    }
}        

以下问题接近我想要达到的目标,但从未得到令人满意的回答:是否可以检查 pdostatement::fetch() 是否有结果而不遍历一行?

非常感谢任何帮助!

谢谢

鲍勃

4

3 回答 3

3

你不需要fetch()但是fetchAll()

于 2013-08-19T11:12:09.993 回答
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,因为此结果可用于确定结果集的大小。

于 2013-08-19T11:12:34.713 回答
0

而不是fetch(),使用fetchAll().

fetchAll— 返回一个包含所有结果集行的数组

于 2013-08-19T11:14:26.247 回答