使用下拉列表显示表和值

时间:2016-02-03 19:39:43

标签: php mysql ajax

在此应用程序中,我有一个下拉列表,您可以选择要查看的表格。使用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>留空。

2 个答案:

答案 0 :(得分:1)

您过早地致电mysqli_free_result($query)。所以当你调用mysqli_fetch_array时,sql结果已经消失了。在最后一次循环后移动mysqli_free_result

答案 1 :(得分:0)

我不确定这是否是一个错字或以下是问题所在,但您在{{{{}}后面的列名称周围缺少打开和关闭<tr>标签1}}和<tbody>之前。这可能有助于解释为什么东西正在被打印出来&#34;在外面&#34;桌子。