簡體   English   中英

SQL數據:HTML表顯示包含多行的列數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM