2012-12-19 81 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