在此应用程序中,我有一个下拉列表,因此您可以选择要查看的表。使用 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>
留空。
你给mysqli_free_result($query)
打电话太早了。所以当你调用mysqli_fetch_array
时,sql结果已经消失了。在最后一个循环后mysqli_free_result
移动。
我不确定这是错别字还是以下是问题所在,但是您在<tbody>
之后和</tbody>
之前缺少列名周围的开始和关闭<tr>
标签。这可能有助于解释为什么东西显然是在桌子"外面"打印的。