我尝试制作搜索功能,当您搜索标签时,它应该为您提供带有该标签的图像。当我只是在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>
答案 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)
您可以将结果存储在数组中,也可以将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>