2014-01-30 23 views
0

我沒有問題產生輸出, 但是,我不知道從行到列產生。從行到列

簡單的代碼和輸出我放在這裏。

謝謝。

$con = mysql_connect('localhost', 'root', 'xxx') 
if (!$con) { die('Could not connect: ' . mysql_error()) } 
mysql_select_db("kasy", $con) 
$sql="SELECT * from exam where intake='$b'" 


echo "<table border='1'> 
<th>name</th> 
<th>subject</th> 
<th>grade</th> 
</tr>"; 

$row= mysql_query($sql) 
    { 
    echo "<td>" . $row['name'] . "</td>"; 
    echo "<td>" . $row['subject'] . "</td>"; 
    echo "<td>" . $row['grade'] . "</td>"; 
    } 

輸出:

Name | Subject | Grade 
Jose | History | A 
Jose | Language | A 
Jose | Account | B 
Brian | History | B 
Sarah | Math  | C 

,但我想是這樣的,我也沒辦法,

|Name | History | Language | Account | Math | 
|Jose | A  | A  | B  | NULL | 
|Brian | B  | NULL | NULL | NULL | 
|Sarah | NULL | NULL | NULL | C | 

攝入量= '$ B'=從形式,我發佈數據。

我只是想知道如何排列和生成像這樣。特別感謝。

回答

1

您需要旋轉數據。你可以用aggregatino做到這一點:

select name, 
     max(case when subject = 'History' then grade end) as History, 
     max(case when subject = 'Language' then grade end) as Language, 
     max(case when subject = 'Account' then grade end) as Account, 
     max(case when subject = 'Math' then grade end) as Math 
from exam 
group by name; 

我不知道是什麼where intake='$b'是,因爲你沒有在數據intake列。此外,mysql_接口已棄用,因此您應該使用更現代的東西 - 並使用參數來防止SQL注入攻擊。

+0

攝入量=「$ B」從形式,我發佈的數據。我已經運行了這個查詢,並且需要一些時間來生成,所以任何代碼都不會執行這樣的查詢,就像foreach一樣。 – user2431391

+0

在這個輸出,我已經顯示了多少個主題,如果我不知道有多少主題, – user2431391

+0

@ user2431391。 。 。那麼你需要一個動態的支點。在StackOverflow上尋找答案,解釋如何做到這一點。它絕對有很好的代碼示例。 –

0

您應該使用庫MySQLi或MySQL已經被棄用,甚至更好的PDO,但試試這個

$con = mysql_connect('localhost', 'root', 'xxx') 
if (!$con) { die('Could not connect: ' . mysql_error()) } 
mysql_select_db("kasy", $con) 

    echo"<table border='1'> 
     <tr> 
      <td>Name</td> 
      <td>History</td> 
      <td>Language</td> 
      <td>Account</td> 
      <td>Math</td> 
     </tr>"; 

    $result = mysql_query(SELECT * from exam where intake='$b'"); 

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
     { 

      echo" 

     <tr> 
      <td>".$row['Name']."</td> 
      <td>".$row['History']."</td> 
      <td>".$row['Language']."</td> 
      <td>".$row['Account']."</td> 
      <td>".$row['Math']."</td> 
     </tr> 


      "; 

     }