根据行名获取列名

时间:2019-03-05 09:28:15

标签: php mysql database web

enter image description here

我想获取值为1的第V1行,并根据该值获取列名 例如mysql中的v1 = d1,d2,d5,d6,d8,d9

我忘了提到我的专栏是动态添加的。

已编辑:-问题说明...

OP要选择column_id =“ v1”且d1- d9列具有1个值的列名称...

2 个答案:

答案 0 :(得分:1)

您可以尝试使用concat,如果

    select  concat( 
          if(d1, 'd1', null) 
        , if(d2, ',d2', null) 
        , if(d3, ',d3', null) 
        , if(d4, ',d4', null) 
        , if(d5, ',d5', null)
        , if(d6, ',d6', null)
        , if(d7, ',d7', null)
        , if(d8, ',d8', null) 
        , if(d9, ',d9', null)
        )
    from online_defect_table
    where variant_id = 'V1'

或为避免问题(如果所有操作数均为空)

    select  concat( 
          if(d1, 'd1', '') 
        , if(d2, ',d2', '') 
        , if(d3, ',d3', '') 
        , if(d4, ',d4', '') 
        , if(d5, ',d5', '')
        , if(d6, ',d6', '')
        , if(d7, ',d7', '')
        , if(d8, ',d8', '') 
        , if(d9, ',d9', '')
        )
    from online_defect_table
    where variant_id = 'V1'

答案 1 :(得分:0)

我假设您知道如何从数据库中获取结果,并且假设您将V1的所有值存储在名为$row的变量中。

您可以遍历该行并获取所有值不为0的键。

$confirmedColumns = [];
foreach($row as $column => $value){
    if($value == 1) {
        // []= means "append to array", similar to how += appends to strings
        $confirmedColumns[]= $column;
    }
}

print_r($confirmedColumns);