-1

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

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

我尝试了几种方法,但没有使用 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;
4

3 回答 3

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>";
于 2014-07-10T15:12:16.143 回答
0

不知道我是否得到你想要的。但是试试看:

$row = mysql_fetch_row($query_columns);

然后你可以在你的 for 循环中创建 if

for ($i=0; $i<$numberfields ; $i++ ) {
    if($row[$i] == 1) { 
        $var = mysql_field_name($query_columns, $i);
        $row_title .= $var;
    }
}
于 2014-07-10T15:03:38.263 回答
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;
于 2014-07-10T15:24:13.953 回答