生成输出没问题, 但是,我不知道从行到列生成。
我放在这里的简单代码和输出。
感谢。
$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 |
intake ='$ b'=来自表单,我发布数据。
我只是想知道如何数组并生成这样的。特别感谢。
答案 0 :(得分: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注入攻击。
答案 1 :(得分:0)
你应该使用mysqli甚至更好的PDO,因为mysql已被弃用,但试试这个
$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>
";
}