我遇到了一个问题,下面语句的输出显示了正确的内容,但当我单击其中一个项目(超链接)时,它们都会出现在同一页面,底部行的名称相同:
<table class="center">
<!-- Creating a table with the class of 'center' -->
<!-- SEARCH FORM -->
<?php
$KEYWORD = $_POST['keyword'];
$stmt = $conn->prepare("SELECT DISTINCT dog_park_name FROM dog_parks.items WHERE dog_park_name LIKE '%{$KEYWORD}%'");
$stmt->execute();
for ($i = 0; $row = $stmt->fetch(); ++$i) {
$_SESSION["dog_park"] = "$row[0]";
?>
<!-- DISPLAY RESULTS -->
<tr> <!-- Adding the first table row -->
<th>Dog Park</th> <!-- Adding the second table header -->
</tr>
<tr> <!-- Adding the second table row -->
<td><a href="individual_item_page.php" ><?php echo $row[0]; ?></a></td> <!-- Add the second cell on the second row -->
</tr>
<?php
}
?>
</table>
我搜索一个关键词,它会产生以下正确的输出:
TRAMWAY ST DOG OFF LEASH AREA
STRINGYBARK DVE DOG OFF LEASH AREA
当我点击返回的任何结果时,问题就出现了,它们都会出现在同一页上,底部一行的名称相同。。
STRINGYBARK DVE DOG OFF LEASH AREA
STRINGYBARK DVE DOG OFF LEASH AREA
我认为这与$stmt->fetch()
有关
无法发布图片抱歉。。。
Note: the change is here --> $row[0] not "$row[0]"
$_SESSION["dog_park"] = "$row[0]";
之前
$_SESSION["dog_park".$i] = $row[0];
之后
然后通过
获取会话值
$_SESSION["dog_park0"];$_SESSION["dog_park1"];$_SESSION["dog_park2"];$_SESSION["dog_park3"]等等,
如果希望循环正常工作,则需要将数据分配给不会被覆盖的变量,请在会话和行中使用i来递增,否则使用foreach循环。
for ($i = 0; $row = $stmt->fetch(); ++$i) {
$_SESSION["dog_park"][$i] = $row[$i];
?>
这将阻止会话数组返回相同的值。通过这种方式,您可以查看每个结果并逐一设置(而不是将所有结果都设置为一个值)。