首页 > 解决方案 > 我的 if 语句没有按预期工作

问题描述

此代码根据我在列上有多少数据来复制元标记,entry_type独立于我所在的页面entry_typepost还是pagina页面。它正在从和打印出meta标签。ifelse

$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="">';
    }

 }

编辑:我解决了重复的问题

$mt = $conn->query("SELECT entry_type FROM bn_publicacao WHERE entry_type IS NOT NULL GROUP BY entry_type")->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="">';
    }

 }

但我仍然有两个问题,if并且else同时打印出来。

结果来自print_r

$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

    }

}

数组 ( [0] => 数组 ( [entry_type] => pagina [0] => pagina ) [1] => 数组 ( [entry_type] => post [0] => post ) ) 数组 ( [0] =>数组([entry_type] => pagina [0] => pagina)[1] => 数组([entry_type] => post [0] => post))

数组 ( [0] => 数组 ( [entry_type] => pagina [0] => pagina ) [1] => 数组 ( [entry_type] => post [0] => post ) )

数组 ( [0] => 数组 ( [entry_type] => pagina [0] => pagina ) [1] => 数组 ( [entry_type] => post [0] => post ) )

我的代码有什么问题?我该如何解决?

标签: phpdatabaseif-statementforeachecho

解决方案


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

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

$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="">';
   }
 }

推荐阅读