Моя инструкция if не работает должным образом - PullRequest
0 голосов
/ 25 сентября 2018

Этот код дублирует метатеги в соответствии с тем, сколько данных у меня есть в столбце entry_type, независимо от того, является ли entry_type post или pagina страницы, на которой я нахожусь.И он печатает meta теги из if и else.

$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

    }

}
  • Результат 1:

Array ([0] => Array ([entry_type] => pagina [0] => pagina) [1] => Array ([entry_type] => post [0] => post)) Array ([0] => Array ([entry_type] => pagina [0] => pagina) [1] => Array ([entry_type] => post [0] => post))

  • Результат 2:

Array ([0] => Array ([entry_type] => pagina [0] => pagina) [1] => Массив ([entry_type] => post [0] => post))

  • Результат 3:

Array ([0] => Array ([entry_type] => pagina [0] => pagina) [1] => Array ([entry_type] => post[0] => post))

Что не так намой код?И как я могу это решить?

1 Ответ

0 голосов
/ 25 сентября 2018

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