Php 检查PDO结果,如果无显示消息,如果是,则循环通过

Php 检查PDO结果,如果无显示消息,如果是,则循环通过,php,pdo,Php,Pdo,试图找到另一个简单的答案,但只找到复杂的例子 我试图简单地查询一个表,如果有结果要显示,则循环查询,如果没有结果,则显示一条消息-不幸的是,所有示例都可以在while循环中找到“fetch”,而不是之前,因此我尝试执行以下操作: $stm = $PdoObj->prepare("SELECT * FROM NEWS_articles"); $stm ->execute(); $results = $stm ->fetch(); if($results==null){

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

我试图简单地查询一个表,如果有结果要显示,则循环查询,如果没有结果,则显示一条消息-不幸的是,所有示例都可以在while循环中找到“fetch”,而不是之前,因此我尝试执行以下操作:

$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"];
    }
}        
$stm=$PdoObj->prepare(“从新闻文章中选择*);
$stm->execute();
$results=$stm->fetch();
如果($results==null){
echo“无骰子,尝试其他标准”

; }否则{ foreach($结果为$行){ echo$row[“articleName”]; } }
以下问题接近于我试图实现的目标,但从未得到令人满意的回答:

非常感谢任何帮助

谢谢


Bob

你不需要
fetch()
而是
fetchAll()
你不需要
fetch()
而是
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
    }
}
获取已返回多少行的官方方法是:


不过,如果您已经在调用
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
    }
}
获取已返回多少行的官方方法是:

虽然如果您已经在调用
fetchAll
,则不需要这样做,因为此结果可用于确定结果集的大小。

使用
fetchAll()
而不是
fetch()

fetchAll
-返回包含所有结果集行的数组

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


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

抱歉-我应该在尝试此操作时提到发生的情况-我收到一个错误,错误是:PHP警告:非法字符串偏移量'articleName'-1,用于在未阅读文档的情况下使用函数。您是否调试了
$results
它包含了你认为它所做的事情?“MRFETT意识到,尽管你的<代码> $结果=null < /代码>正在工作,但这不是可读的比较,考虑到你实际上正在执行<代码> ARAYE()= NULLUT/CODE >,你应该考虑一个更语法正确的检查,例如或<代码> $结果=ARARY()/<代码>或“代码>计数($结果)=0 <代码>空。($结果)在这种情况下,等于
$results==null
,因此,用一个替换另一个是没有用的。另外两个是正确的,但毫无用处。抱歉-我应该在尝试此操作时提到发生的情况-我收到一个错误,错误是:PHP警告:非法字符串偏移量'articleName'-1,因为使用函数时未读取docu首先是心理状态。您是否调试过
$results
,以查看它是否包含您认为它的功能?@MrFett请注意,尽管您的
$results==null
正在工作,但考虑到您实际上正在执行
数组()你应该考虑一个更加语法正确的检查,比如“或”代码> $FESUL= = ARRAY()/<代码>或“代码>计数($结果)=0  <代码>空($结果)
在这种情况下等于
$results==null
,因此,用一个替换另一个是没有用的。其他两个都是正确的,但毫无用处。这将是不必要的调用。@你的常识是说,这并没有回答他关于如何找出返回多少结果的问题??是的,但需要额外调用rowCount()没用。一个人既不需要行数也不需要行数()也没有专门的变量$rowC来知道他们是否得到了结果。这个调用会使代码不必要地膨胀。@YourCommonSense尽管如此,它还是用一个“适当的”方法回答了这个问题,所以它当然值得放在这个页面上。但是,我添加了一个替代方法,来检查
fetchAll
的结果,如果这是正确的你更喜欢
empty()
在这里也没用:)这让我想知道,为什么PHP用户如此倾向于使用额外的运算符,这使得代码膨胀而没有任何好处:)这将是不必要的调用。@你的常识是说这并没有回答他关于如何找出返回多少结果的问题??是的,但是对rowCount()的额外调用是无用的。不需要rowCount()或专用变量$rowC就可以知道是否有结果。这个调用会使代码变得不必要的臃肿。@YourCommonSense尽管如此,它还是用“适当”的方法回答了这个问题,因此它当然值得放在这个页面上。但是,我添加了一个替代方法,可以只检查
fetchAll
的结果,如果这是您喜欢的
empty()
在这里也没用:)这让我想知道,为什么PHP用户如此倾向于使用额外的运算符,这使得代码膨胀而没有任何好处:)