2016-02-03 36 views
0

在此應用程序中,我有一個下拉菜單,以便您可以選擇要查看的表格。使用Ajax我將變量$ tbl作爲一個整數進行推送,下面的代碼打印出與該整數對應的表。有些東西雖然不起作用,但我需要一雙額外的眼睛來幫助調試。使用下拉菜單顯示錶格和值

if($tbl == 9){$table = "person";} 

    $conn = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME); 
    $query = mysqli_query($conn, "SELECT * FROM $table ") or die(mysqli_error($conn)); 

if($query){ 

    echo '<table border="1"><thead><tr>'; 

    $colnames = array(); 

    while ($finfo = mysqli_fetch_field($query)) { 
     $name=$finfo->name; 

     array_push($colnames, $name); 

     echo "<th>".$name."</th>"; 

    } 
    mysqli_free_result($query); 

    echo '</tr></thead><tbody>'; 



    $count = 0; 
    echo $colnames[$count]; // this test prints the correct column name but it ends up being printed OUTSIDE the table for some reason 
    while ($row = mysqli_fetch_array($query, MYSQLI_BOTH)){ 
     echo '<td>'.$row[$colnames[$count]].'</td>'; 
     $count++; 
    } 

    echo "</tbody></table>"; 

} 

最後while循環是假設呼應出每個字段的值,但<tbody>留空它不執行。

回答

1

你叫mysqli_free_result($query)太早。所以到你叫mysqli_fetch_array的時候,sql結果已經消失了。在最後一個循環後移動mysqli_free_result

0

我不確定它是否是錯字,或者下面是問題出在哪裏,但是您錯過了在<tbody>之後和</tbody>之後打開和關閉列名稱周圍的<tr>標籤。這可能有助於解釋爲什麼東西顯然被「印在」桌子外面。