[英]SQL Data: HTML Table display of column data containing multiple rows
我什至不确定如何正确地提出问题,否则我可能会找到答案。 因此,我将尽力解释。
我正在使用一个名为SLDB的脚本(我没有编写这些脚本),按目前的情况来看,这些脚本的功能与广告宣传的一样。 我希望将存储的数据回调到网站表中(而不是脚本的设计目的)。
当前,SLDB的设置方式以这种方式存储字段:
ID Field Value
001 name name1
001 size size1
002 name name2
002 size size2
003 name name3
003 size size3
在将变量传递到database.php脚本的主脚本中,它将名称和大小传递为“字段”,然后将它们的每个值传递为“值”。
我想在网页上显示的是:
ID Name Size
001 name1 size1
002 name2 size2
003 name3 size3
实际上,我宁愿重写原始脚本和database.php脚本以这种方式创建和更新表,但在可能之前,我宁愿找到一种无需重写即可完成任务的方法。 。
我对MySQL不够熟练,无法理解如何获取具有多个变量的字段(Field,Value)以单独显示在一行中。 当前,它是这样打印出来的:
http://wickednight.net/contests/photo-december/results.php
这是我编写的用于在html中显示表格的简单php脚本:
<?php
$con=mysqli_connect("localhost","***","***","***");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM sldb_data");
echo "<table border='1' class='db-table' align='center'>
<tr>
<th>Name</th>
<th>Size</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['field'] . "</td>";
echo "<td>" . $row['value'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
我意识到,按照编写的要求,此脚本的功能与要求的完全一样。 我认为,我需要完成的工作很明显。 任何帮助是极大的赞赏。
这应该工作:
SELECT t1.uuid, t1.value AS name, t2.value AS size FROM sldb_data t1, sldb_data t2
WHERE t1.uuid = t2.uuid AND t1.field = "name" AND t2.field = "size"
简短说明:
您可以为查询中的表使用其他名称。 当您的表名称很长或毫无意义时,这很好。 这是在FROM部分完成的。 “ sldb_data t1”为表“ sldb_data”赋予名称“ t1”。
因为我们想从同一个表中获取两个不同的行,所以我们不得不使用同一个表两次,但是必须给它两个不同的名称,否则mysql并不知道您到底想要什么。 您可以认为它好像有两个相同的表。
现在我们在t1的field =“ name”中查找一行,在t2的field =“ size”中查找一行,但仅将它们与相同的uuid匹配。
SELECT之后,我们只列出我们想要的结果中的字段。 再一次,我们给字段起一个名字。 但是对于字段,您必须使用“ as”。
我不确定您想要什么,但是可以说存储表单字段名称及其每个值不是一个好主意。 可能您已经知道我们使用post / get方法将名称和值用于插入目的。
您的sldb_data表可能有
id(PK) name( varchar) size(int)
在三列中,然后像
SELECT name,size FROM sldb_data
和你的代码应该
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['size'] . "</td>";
echo "</tr>";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.