(PHP + MySQL)如何在特定条件下回显列名?

时间:2014-01-16 20:45:20

标签: php mysql

我正在使用PHP 5.4和MySQL数据库。

此数据库代表媒体库。我正在处理的表有一列,“Title”,有明显的内容,然后是一系列布尔列,表示给定平台上该标题的可用性。所以一行看起来像

标题:“遏制你的热情:游戏”
PS4:0
Atari 2600:1
Dreamcast:0

等等。

我想写的PHP代码是伪代码

  1. 回声行[0](标题)
  2. 循环通过行中的其他单元格
  3. 如果单元格为“0”或NULL,则不执行任何操作
  4. 但如果单元格为'1',则回显该列的名称
  5. 结果将是

    的回声

    遏制你的热情:游戏(Atari 2600,WonderSwan,土星)

    这是我无法解决的第四个陈述。它似乎需要函数mysqli_fetch_field,但我不确定语法,并且我在google搜索之后没有尝试。

    我真的很感激有人可以提供任何建议或示例!

    $database = mysqli_connect(SERVER,USERNAME,PASSWORD,'games'); 
    $query = mysqli_query($database,"SELECT * FROM games` WHERE NAME LIKE '%ZELDA%'"); 
    while ($row = mysqli_fetch_row($query)) { 
        echo $row[0]; // Echo title 
        for ($i=0;$i<sizeof($row);$i++) { 
            if ($row[$i] === '1') { 
                // ???????
            } 
        } 
    }
    

2 个答案:

答案 0 :(得分:2)

这是一些粗略的未经测试的代码,希望能让你前进。

while ($row = mysqli_fetch_assoc($query)) { 
    $columns = array(); // this will track the additional columns we need to display
    foreach($row AS $column => $value) {
        if($column == "title") {
            echo $value; // this is the title, just spit it out
            continue;
        }

        if($value == 1) {
            // We have a column to display!
            $columns[] = $column;
        }
    }
    if(count($columns)) {
        // We have one or more column names to display
        echo " (" . implode(", ",$columns) . ")";
    }
}

有些事要指出:

  1. 使用mysqli_fetch_assoc将允许您访问列名和值,这在此处非常有用。
  2. 首先跟踪要在数组中显示的列,这样可以在每个循环结束时更容易格式化输出。

答案 1 :(得分:0)

听起来你可以这样做:

// Simulates DB fetch
$titles = array(
    array(
        'TITLE'=>'Curb Your Enthusiasm: The Game',
        'PS4'=>0,
        'Atari 2600'=>1,
        'Dreamcast'=>0
    ),
    array(
        'TITLE'=>'Curb Your Enthusiasm: The Book',
        'PS4'=>1,
        'Atari 2600'=>1,
        'Dreamcast'=>0
    )
);

foreach($titles as $title){
    // get supported platforms
    $supportedPlatforms = array();
    foreach($title as $titleAttribute=>$titleValue){
        if($titleAttribute != 'TITLE' && $titleValue == 1)
            $supportedPlatforms[] = $titleAttribute;
    }

    echo $title['TITLE'] . ' (' . implode(', ', $supportedPlatforms) . ')' . "<br>";
}

尝试在此处运行:http://phpfiddle.org/lite/code/pr6-fwt