我什至不知道如何正确地提出问题,否则我可能会找到答案。所以,我会尽力解释。
我正在使用一个名为 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 匹配。
在选择之后,我们只列出我们想要在结果中出现的字段。我们再次为这些字段命名。但对于字段,你必须使用“as”。
我不确定你想要什么,但我可以说存储表单字段名称及其每个值不是一个好主意。也许您已经知道我们使用名称和值来使用 post/get 方法插入。
你的 sldb_data 表可能有
id(PK) 名称(varchar) 大小(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>";
}