2012-12-19 50 views
-1

我有以下字段PHP和MySQL显示列名

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

我只想显示包含1.有下列结果列名称表。

Jack does sport_1 sports_3 
+7

是,我想一次开十辆全新的跑车(但是, t不起作用)。那么你的实际编程问题是什么?有关如何编写一个好问题的更多信息,请在发布*任何问题之前按照[确认](http://stackoverflow.com/questions/ask-advice)进行确认。请记住,只有你想要的东西,你问自己如何编程不符合本身的编程问题。改变措辞,以便清楚你到目前为止做了什么,以及你的具体编程问题是什么,你在哪里碰到障碍等。 – hakre

+1

除了@hakre的评论,[你有什么尝试](http:///whathaveyoutried.com)? – Havelock

+0

使用您当前的架构无法完成。但没关系,因为无论如何,所讨论的模式都是错误的。 :)你可能想看看能更好地利用外键,交集表等的模式。 – GordonM

回答

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 
7

你实际上想要的是另一个表结构。我会详细说明一点。

你描述的是一个多对多的关系。你在列中的运动实际上应该被包含在另一个名为“sports”的表中,并且在“users”表和“sports”表之间有一个名为“users_to_sports”的新表连接这两个表。

检查http://sqlrelationship.com/many-to-many-relationship/进行了较为深入的解释

+1

我打算写一个查询,但是你的解决方案要好得多。 – Peon