无法使用MySql

时间:2018-10-06 01:31:43

标签: javascript php jquery ajax

我尝试了很多事情,但想法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),但是图像未在屏幕上替换...请帮助!

1 个答案:

答案 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);
     });
});