我尝试了很多事情,但想法ideas尽。我正在尝试动态检索存储在某个文件夹中的图像,并从数据库中检索它们的路径,以便可以按照提供的路径加载它们。
我的查看代码;
<div class="card mb-4">
<img id="artimg" src="" class="card-img-top" alt="Thumbnail [100%x225]"/>
</div>
我的JQuery:
$('#mark').change(function(event){
var citid = $(this).val();
window.console && console.log('sending $_POST');
$.post('mod/imgart.php', {'idc':citid}, function(data){
$("#artimg").attr("src", data);
window.console && console.log(data);
});
});
我的模特:
<?php
require_once "../pdo.php";
$stmt = $pdo->query("SELECT * FROM objects WHERE mark_id = {$_POST['idc']}");
echo"<img src=''/>";
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo"<img src='{$row['artic_image']}'/>";
};
*注意:我将使用占位符并注意注射
我查看了控制台,并正确检索了数据(...我也尝试过使用images / chile / calle_yungay.png),但是图像未在屏幕上替换...请帮助!
答案 0 :(得分:0)
您的mod/imgart.php
输出2个完整的img
元素。删除<img src=''/>
输出,仅输出应该在src
属性中输入的值。
$stmt = $pdo->prepare("SELECT artic_image FROM objects WHERE mark_id = ? limit 1");
$stmt->execute(array($_POST['idc']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['artic_image']";
我也为您设置了参数。另外,在只需要1列时不要使用*
,在只需要1行时不要循环(while
)(我也向查询中添加了limit
。要返回多于1行,您应该返回一个JSON对象并在JS中进行迭代。目前尚不清楚如何在该代码中填充多个图像URL。
多张图片的选项2:
$stmt = $pdo->prepare("SELECT artic_image FROM objects WHERE mark_id = ? limit 1");
$stmt->execute(array($_POST['idc']));
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo '<img src="' . $row['artic_image'] . '" />';
}
然后将这样的完整图像列表放入容器中(伪代码,未经测试):
$('#mark').change(function(event){
var citid = $(this).val();
window.console && console.log('sending $_POST');
$.post('mod/imgart.php', {'idc':citid}, function(data){
$("#populate_me").html(data);
window.console && console.log(data);
});
});