在此应用程序中,我有一个下拉列表,您可以选择要查看的表格。使用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>
留空。
答案 0 :(得分:1)
您过早地致电mysqli_free_result($query)
。所以当你调用mysqli_fetch_array
时,sql结果已经消失了。在最后一次循环后移动mysqli_free_result
。
答案 1 :(得分:0)
我不确定这是否是一个错字或以下是问题所在,但您在{{{{}}后面的列名称周围缺少打开和关闭<tr>
标签1}}和<tbody>
之前。这可能有助于解释为什么东西正在被打印出来&#34;在外面&#34;桌子。