我创建了一个表单来从数据库中搜索表,用户可以在其中选择要查看的表。下面是我的表单代码。
<form action="search.php" method="post">
<label class="col-lg-3 control-label">Search Table:</label>
<select class="form-control" name="table1">
<option value="Country_Table">Country</option>
<option value="Flag_Table">Flag</option>
<option value="Region_Table">Region</option> </select>
<button id="search" type="submit" class="btn btn-primary">Search</button>
</form>
if(isset($_POST['search'])){
$table1 = $_POST['table1'];
$sql = "SELECT * FROM $table1";
$stmt = $dbcon->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
假设用户选择“国家”并显示结果,我使用以下代码:
<table class='table'>
<tr>
<th>ID</th>
<th>Area</th>
<th>Color</th>
</tr>
<?php foreach($result as $readrow){ ?>
<div class="table-row">
<td><?php echo $readrow['id'];?></td>
<td><?php echo $readrow['area'];?></td>
<td><?php echo $readrow['color'];?></td>
问题是,如果用户选择“标记”或“区域”,如何显示表格结果?有什么办法,表格可以显示自己的标题?
答案 0 :(得分:2)
有很多重复的问题,但是所有答案都是出于任何原因,提供了涉及运行额外查询等的复杂解决方案。
解决方案就在这里:$result
变量中已经具有所有列标题
$headerNames = $result ? array_keys($result[0]) : [];
现在您可以遍历$coulmnNames
来获取表头。
<table class='table'>
<tr>
<?php foreach($coulmnNames as $name): ?>
<th><?= $name ?></th>
<?php endforeach ?>
</tr>
<?php foreach($result as $row){ ?>
<tr class="table-row">
<?php foreach($result as $value){ ?>
<td><?= $value ?></td>
</tr>
<?php endforeach ?>
</table>
重要提示。永远不要直接从用户输入中插入变量。对于表名,您必须 whitelist them first。