-1

我有以下字段的表

+----+------+----------+----------+----------+
| id | name | sports_1 | sports_2 | sports_3 |
+----+------+----------+----------+----------+
|  3 | jack |        1 |        0 |        1 |
+----+------+----------+----------+----------+

我只想显示包含 1 的列名。得到以下结果。

Jack does sport_1 sports_3
4

2 回答 2

7

你真正想要的是另一个表结构。我会详细说明一下。

您所描述的事物是多对多关系。您在列中拥有的运动实际上应该包含在另一个名为“sports”的表中,并且在“users”表和“sports”表之间,您有一个名为“users_to_sports”的新表将两者连接起来。

检查http://sqlrelationship.com/many-to-many-relationship/以获得更深入的解释

于 2012-12-19T10:13:05.637 回答
1

这只是解决方法,您可以按照 chrisR 所说的那样更改表格的结构

但是,如果您愿意,可以在这里查看,如果它对您有帮助。

    $con = mysql_connect("localhost","root","admin");
     if (!$con)
             {
              die('Could not connect ya rafik : ' . mysql_error());
              }
   mysql_select_db("mydatabase", $con);
   $query = mysql_query("SELECT * FROM mytable2 ORDER BY name ");

   // please use PDO or mysqli instead.

然后你像这样通过php管理结果

   while ($column_data = mysql_fetch_assoc ($query)) {
          echo $column_data['name']." does : ";
        if ($column_data['sports_1'] == 1 ){echo "  Sport1  ";} else {}
        if ($column_data['sports_2'] == 1 ){echo "  Sport2  ";} else {}
        if ($column_data['sports_3'] == 1 ){echo "  Sport3  " ;} else {}
           echo "<br />" ;

      }

数据库是这样的

id  name    sports_1    sports_2    sports_3
1   Mark      1               0         1
2   John      0               1         1

结果将是这样的:

    John does : Sport2  Sport3
    Mark does : Sport1  Sport3 
于 2012-12-19T13:58:01.443 回答