想要发布多个搜索结果

时间:2017-04-20 11:13:27

标签: php

我尝试制作搜索功能,当您搜索标签时,它应该为您提供带有该标签的图像。当我只是在php代码(第101行)中回显时,它会给出所有链接。但是,当我尝试在html中发布它时,它只返回一个结果。

php code

  $postTags = "";
if (isset($_POST['Find'])) {
try {

    $pdoConnect = new PDO("mysql:host=localhost;dbname=imdterest", "root", "");

} catch (Exception $exc) {
    echo $exc->getMessage();
    exit();
}

$postTags = $_POST['naam'];

$pdoQuery = "SELECT * FROM posts WHERE postTags = :tags";

$pdoResult = $pdoConnect->prepare($pdoQuery);

$pdoExec = $pdoResult->execute(array(":tags" => $postTags));

while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) {
    $postTags = $row['postImageUrl'];
    //echo $postTags;
 }
}

html代码

   <div class="search">
        <img src="<?php echo $postTags; ?>">
    </div>

3 个答案:

答案 0 :(得分:0)

像这样更改你的while循环,因为你没有使用数组,下一个数据会覆盖前一个数据,而你剩下的只剩下一个最后一个图像链接的图像链接。因此要防止覆盖使用数组。

$postTags=[];
while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) {
    $postTags[] = $row['postImageUrl'];
    //echo $postTags;
 }

和这样的html代码一样,现在你需要显示所有的多个图像,并且需要迭代和foreach是迭代数组的一种方法。

<?php
foreach ($postTags as $postTag) {
    ?>
    <div class="search">
        <img src="<?php echo $postTag; ?>">
    </div>
<?php }?>

答案 1 :(得分:0)

变量$postTags被覆盖,并且只保存MySQL结果集的最后一个值。创建一个数组并循环遍历它。

$postTags = array();
while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) {
    $postTags[] = $row['postImageUrl'];
}

在HTML中:

foreach($postTags as $val)
{ ?>
    <div class="search">
        <img src="<?php echo $val; ?>">
    </div>
<?php
} ?>

答案 2 :(得分:0)

问题是,在你的php代码中,你有WHILE循环,你回显所有找到的行的链接。这就是它打印所有结果的原因。但是,您也不会存储值,但每次迭代时都会覆盖它。在您的HTML中,您没有while循环,而只是打印覆盖变量(可能是最后的结果)。

您可以将结果存储在数组中,也可以将while循环移动到HTML位置。 存储到数组中:

$allResults = array();

while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) {
     $allResults[] = $row['postImageUrl'];
}

然后在你的HTML代码中的某个地方

<div class="search">
<?php
foreach ($allResults as $imageLink){
     echo '<img src="' . $imageLink . '">";
}
?>
</div>