отображать вывод SQL-запроса для столбцов - PullRequest
0 голосов
/ 02 марта 2019

у меня есть эта таблица

id | apple | banana | coconut | pear|
1     1       1       1           0
2     0       0        1          1
3     1       0        0          1

и этот sql-запрос

select tree
from ((select id, 'apple' as tree
       from trees
       where apple = 1
      ) union all
      (select id, 'banana' as tree
       from trees
       where banana = 1
      ) union all
      (select id, 'coconut' as tree
       from trees
       where coconut = 1
      ) union all
      (select id, 'pear' as tree
       from trees
       where pear = 1
      )
     ) t
where id = 1;

результат -

apple 
banana
coconut

как мне написать это в php такя могу вывести результат

это то, что у меня есть до сих пор

$sql = " select tree
    from ((select id, 'apple' as tree
           from trees
           where apple = 1
          ) union all
          (select id, 'banana' as tree
           from trees
           where banana = 1
          ) union all
          (select id, 'coconut' as tree
           from trees
           where coconut = 1
          ) union all
          (select id, 'pear' as tree
           from trees
           where pear = 1
          )
         ) t
    where id = '$id'";
 $result = mysqli_query($conn, $sql);

но я не знаю, что делать после этого, я не могу поставить цикл while или просто вывести его результатвыдает ошибку

1 Ответ

0 голосов
/ 02 марта 2019

Вы можете просто зациклить результаты, используя mysqli_fetch_assoc():

while ($row = mysqli_fetch_assoc($result)) {
    echo $row['tree'] . "\n";
}

Однако, возможно, проще / эффективнее сделать что-то подобное, использующее имена столбцов для генерации выходных данных,повторяет имя, когда значение в столбце не равно 0:

$sql = "SELECT * FROM trees WHERE id = '$id'";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
    foreach ($row as $key => $value) {
        if ($key == 'id') continue;
        if ($value) echo "$key\n";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...