Php 我的if语句未按预期工作

Php 我的if语句未按预期工作,php,database,if-statement,foreach,echo,Php,Database,If Statement,Foreach,Echo,如果entry\u type是我所在页面的post或pagina,则此代码根据我在entry\u type列上的数据量复制元标记。它正在从if和else打印meta标记 $mt = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchAll(); foreach ($mt as $FB) { if ($FB['entry_type'] == 'pagina'){ echo '<met

如果
entry\u type
是我所在页面的
post
pagina
,则此代码根据我在
entry\u type
列上的数据量复制元标记。它正在从
if
else
打印
meta
标记

$mt = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchAll();

foreach ($mt as $FB) {

    if ($FB['entry_type'] == 'pagina'){ 
        echo '<meta property="og:type" content="website">';
    } else{
        echo '<meta property="og:type" content="article">';
        echo '<meta property="article:author" content="">';
        echo '<meta property="article:publisher" content="">';
        echo '<meta property="article:published_time" content="">';
        echo '<meta property="article:modified_time" content="">';
    }

 }
  • 结果1:
数组([0]=>Array([entry\u type]=>pagina[0]=>pagina)[1]=>Array([entry\u type]=>post[0]=>post])数组([0]=>Array([entry\u type]=>pagina[0]=>pagina][1]=>Array([entry\u type]=>post[0]=>post]))

  • 结果2:
数组([0]=>Array([entry\u type]=>pagina[0]=>pagina)[1]=>Array([entry\u type]=>post[0]=>post))

  • 结果3:
数组([0]=>Array([entry\u type]=>pagina[0]=>pagina)[1]=>Array([entry\u type]=>post[0]=>post))


我的代码怎么了?我如何解决它呢?

fetchColumn
只返回一个结果。可以使用将所有结果作为数组返回的

您需要遍历结果,因为它将是一个数组。代码如下:

$mtFBs = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchAll();
foreach ($mtFbs as $mtFb) {
   if ($mtFB['entry_type'] == 'pagina'){ 
     echo '<meta property="og:type" content="website">';
   } else{
      echo '<meta property="og:type" content="article">';
      echo '<meta property="article:author" content="">';
      echo '<meta property="article:publisher" content="">';
      echo '<meta property="article:published_time" content="">';
      echo '<meta property="article:modified_time" content="">';
   }
 }
$mtFBs=$conn->query(“从bn_publicacao中选择条目类型”)->fetchAll();
foreach($mtFbs作为$mtFb){
如果($mtFB['entry_type']=='pagina'){
回声';
}否则{
回声';
回声';
回声';
回声';
回声';
}
}

验证什么
fetchColumn()
returns@Akintunde-Rotimi你的意思是
var\u dump($mtFB)?结果为NULLif var_dump($mtFB);如果为null,则可能您的查询没有返回任何数据,并且始终呈现其他部分?@SameerJain请再次检查我的问题,我已编辑。@user236945896您的代码正按照要求执行,因此您将看到大量重复的元标记。您需要的是使数组唯一,可能是像“从bn_publicacao中选择不同的条目类型”这样的查询,那么,他们应该使用什么来代替呢?你没有给他们太多的机会,尤其是他们是新手。“你现在在回答中所说的,作为一个评论是合适的,IMHO。”FunkFortyNiner说得很好。答案通过解决方案得到了改进。谢谢:-)这对他们很有帮助。@Jacob请再次检查我的问题,我根据您的回答对我的代码做了一些更改。我编辑了我的问题,添加了更多信息。@user236945896我建议您使用此查询
选择DISTINCT(entry_type)作为bn_publicao中的entry_type,其中entry_type不为NULL
然后在if和else语句中,您应该
打印r($FB)
$mt = $conn->query("SELECT entry_type FROM bn_publicacao WHERE entry_type IS NOT NULL GROUP BY entry_type")->fetchAll();

foreach ($mt as $FB) {
print_r($mt); //Result 1

    if ($FB['entry_type'] == 'pagina'){
    print_r($mt); //Result 2

        //code posted on the question

    } else{    
      print_r($mt); //Result 3

        //code posted on the question

    }

}
$mtFBs = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchAll();
foreach ($mtFbs as $mtFb) {
   if ($mtFB['entry_type'] == 'pagina'){ 
     echo '<meta property="og:type" content="website">';
   } else{
      echo '<meta property="og:type" content="article">';
      echo '<meta property="article:author" content="">';
      echo '<meta property="article:publisher" content="">';
      echo '<meta property="article:published_time" content="">';
      echo '<meta property="article:modified_time" content="">';
   }
 }