【发布时间】:2019-07-22 06:43:43
【问题描述】:
我正在尝试使用简单的搜索表单搜索我的 SQL 数据库,然后将数据返回到屏幕。
例如,用户可以选择一个年份,然后表格中的所有行结果都会显示该条目的所有信息。这是我的表格:
<form class="" method="POST" action="availability.php" enctype="multipart/form-data">
<select class="form-control mb-3" name="year" id="year">
<option disabled selected>Year</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
</select>
<input class="btn btn-blue-grey" type="submit" value="submit">Search
<i class="fas fa-search ml-1"></i>
</input>
</form>
这是我的 PHP
if(isset($_POST['submit'])) {
$year = $_POST['year'];
var_dump($year);
var_dump($_POST);
$sql = "SELECT * FROM availability WHERE year = :year";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':year',$year,PDO::PARAM_STR);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
$data = $stmt->fetchAll(); }
和我的 HTML
<ul>
<?php foreach($data as $stmt) { ?>
<li><?php echo $stmt['cruise'];?></li>
<li><?php echo $stmt['year'];?></li>
<?php } ?>
</ul>
此时,表单已提交,但我在列表中一无所获。任何帮助将不胜感激。
【问题讨论】:
-
我没有看到您在哪里将
$query设置为任何实际值? -
应该不是
$stmt->execute(array("%$year%")); -
year列包含什么,如果它只是像2019这样的值,则查询可以写成SELECT * FROM availability WHERE year = :year,这样会更有效 -
我已经改变了那个值..但仍然没有得到任何回报:(
-
也许你应该向我们展示
availability表的架构,也许还有一些示例行