PHP - echo $ row产生相同的输出

时间:2016-05-12 09:25:53

标签: php mysql

我遇到一个问题,下面的语句输出显示正确的内容,但当我点击其中一个项目(超链接)时,它们最终都在同一页面上,底行的名称相同:< / p>

<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()

有关

无法发布图片抱歉...

2 个答案:

答案 0 :(得分:1)

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"]; 
等,

答案 1 :(得分:-1)

如果你想让循环正常工作,那么你需要将数据分配给一个不会被覆盖的变量,在会话和行中使用i来增加,否则使用foreach循环。

for ($i = 0; $row = $stmt->fetch(); ++$i) {
    $_SESSION["dog_park"][$i] = $row[$i];
?>

这会阻止会话数组返回相同的值。通过这种方式,您可以逐个查看每个结果并将其设置为一个(而不是将所有内容设置为一个值)。