打印字段名称,其中值为1,以逗号分隔

时间:2014-07-10 14:57:37

标签: php mysql field-names

我有一个用于复选框的表,其值为1或0.

我在使用implode打印所选行的列名称时遇到问题,其中字段值等于1(不包括任何等于0的行)并用逗号分隔。

我尝试了几种方法,但没有使用mysql_num_fields我还没能用数组打印字段名称(mysql_fetch_array)

以下是我目前正在使用的内容。任何帮助深表感谢。是的,我将转向mysqli。

$query_columns = mysql_query("SELECT field1, field2, fields3 FROM table1 WHERE user_id = '" .  $id . "'");

    $numberfields = mysql_num_fields($query_columns);

        for ($i=0; $i<$numberfields ; $i++ ) {
            $var = mysql_field_name($query_columns, $i);
            $row_title .= $var;
        }

    echo $row_title;

3 个答案:

答案 0 :(得分:1)

echo不会打印null或false值,你可以看到这个简单的例子;

    echo '--------------<br>';
    echo false; 

    echo null;
    echo '<br>--------------';

另外,如果您只想打印字段名称,即不是它们的值? (我还没能打印字段名称)
为什么不这样做(假设你至少有一个结果):

$row = mysql_fetch_assoc($query_columns);

echo implode(', ', array_keys($row));

如果您不想使用0值名称,只需使用过滤器删除它们,然后打印:

$row = mysql_fetch_assoc($query_columns);

echo implode(', ', array_keys( array_filter( $row )));

如果你想从$ row数据中得到一个漂亮的打印,只需这样做:

echo "<pre>";
print_r($row); // or var_export($row)
echo "</pre>";

答案 1 :(得分:0)

不确定我是否做对了你想要的。 但试试这个:

$row = mysql_fetch_row($query_columns);

然后你可以创建if for for循环

for ($i=0; $i<$numberfields ; $i++ ) {
    if($row[$i] == 1) { 
        $var = mysql_field_name($query_columns, $i);
        $row_title .= $var;
    }
}

答案 2 :(得分:0)

Hope I have understood your question correctly.

$query_columns = mysql_query("SELECT field1, field2, fields3 FROM table1 WHERE user_id = '" .  $id . "'");

    $rows = mysql_fetch_assoc($query_columns);

    $result = '';
    $i=0;
    $count = count($rows);
    foreach($rows as $key => $value) {
        if($value === 1) {
            $result .= '$key';
        }
        if($i!=0 && $i<$count-1)
             $result .= ', ';
        $i++;
    }
    echo $result;