You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过img_id在PHP中实现博客文章指定图片的删除功能

解决图片删除功能失效的问题

你已经精准定位到核心问题了——在echo语句里嵌套<?php print $img_id; ?>是完全错误的写法:此时你已经处于PHP代码执行环境中,不能再直接嵌入PHP标签,而且你要输出的应该是循环里当前图片的$imrow->img_id,而非未定义的$img_id变量。

问题根源

原代码中这一行的错误导致表单提交的delete_rec_id值是无效的字符串<?php print $img_id; ?>,而非真实的图片ID,自然无法触发正确的删除逻辑:

echo '<input type="hidden" name="delete_rec_id" value="<?php print $img_id; ?>" /> ';

修正后的完整图片展示&删除按钮代码

只需要把嵌套的PHP标签改成字符串拼接,直接输出循环中的$imrow->img_id即可:

<?php 
$imsql = "SELECT img_name, img_path, img_id FROM images WHERE post_id = '$id'";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
    while ($imrow = $q2->fetch_object()){
        echo '<img src="images/' . $imrow->img_name . '" width="100%" height="auto"/>';
        echo '<br><br>';
        echo '<form id="delete-' . $imrow->img_id . '" method="post" action="">';
        // 这里改为字符串拼接,直接输出当前图片的ID
        echo '<input type="hidden" name="delete_rec_id" value="' . $imrow->img_id . '" /> ';
        echo '<input type="submit" name="delete" value="Delete Image" class="btn btn-default"/> ';
        echo '</form>';
        echo '<br><br><br><br>';
    }
} 
?>

额外优化建议

  1. 避免SQL注入风险:当前的删除查询存在注入隐患,建议改用预处理语句:
if(isset($_POST['delete'])){
    $img_id = $_POST['delete_rec_id'];
    $deletequery = "DELETE FROM images WHERE img_id=?";
    $stmt = mysqli_prepare($db, $deletequery);
    mysqli_stmt_bind_param($stmt, "i", $img_id);
    mysqli_stmt_execute($stmt);
}
  1. 修复HTML ID唯一性问题:原代码中所有删除表单用了相同的id="delete",不符合HTML规范,上面的修正代码已经改成动态生成唯一IDdelete-{$imrow->img_id}。

内容的提问来源于stack exchange,提问作者abiadura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:49:21