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

PHP循环中生成数据库记录删除按钮失效问题求助

解决PHP循环生成删除按钮表单的问题

我看到你的问题啦,主要是表单按钮的PHP字符串解析错误导致按钮无法正常生成,另外还缺少删除请求的处理逻辑,下面给你一步步修正:

问题根源

你在输出按钮的这行代码里,双引号字符串内的数组语法不符合PHP的解析规则:

echo "<td>" . "<form method=\"post\" action=\"\">" . "<input type=\"submit\" name=\"delete\" value=\"$data['id_img']\">" . "</form>" . "</td>";

PHP在双引号包裹的字符串中,直接写$data['id_img']会被解析错误,因为单引号会打断字符串的结构,导致按钮无法正常渲染。

修正后的完整代码

<?php
session_start(); // 确保session已启动,否则无法获取$_SESSION['id_u']

// 处理删除请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete'])) {
    try {
        include("dbconnectie.php");
        // 验证要删除的记录属于当前用户,防止越权删除
        $deleteQuery = $db->prepare("DELETE FROM shop WHERE id_img = :id_img AND id_u = :id_u");
        $deleteQuery->bindParam(":id_img", $_POST['delete']);
        $deleteQuery->bindParam(":id_u", $_SESSION['id_u']);
        $deleteQuery->execute();
        // 删除后刷新页面,避免重复提交
        header("Location: " . $_SERVER['PHP_SELF']);
        exit;
    } catch(PDOException $e) {
        die("删除错误!: " . $e->getMessage());
    }
}

// 查询当前用户的记录
try{
    include("dbconnectie.php");
    $query = $db->prepare("SELECT * FROM shop WHERE id_u = :id");
    $query->bindParam("id", $_SESSION['id_u']);
    $query->execute();
    $result = $query->fetchALL(PDO::FETCH_ASSOC);
    
    echo "<table border='1'>"; // 添加border方便调试查看表格结构
    foreach($result as $data) { // 去掉不必要的引用&,避免内存泄漏风险
        echo "<tr>";
        $img = $data['img_url'];
        echo "<td>" . $data["brand"] . "</td>";
        echo "<td>" . $data["model"] . "</td>";
        echo "<td> Condition: " . $data["cond"] . "/100 </td>";
        echo "<td> Prijs: &dollar; " . number_format($data["price"],2,",",".") . "</td>";
        echo "<td> <img src='$img' width='400' height='300' ></img> </td>";
        // 修正按钮语法,用字符串拼接确保PHP正确解析数组值
        echo "<td>
                <form method='post' action=''>
                    <input type='submit' name='delete' value='" . $data['id_img'] . "' onclick='return confirm(\"确定要删除这条记录吗?\")'>
                </form>
              </td>";
        echo "</tr>";
    }
    echo "</table>";
} catch(PDOException $e) {
    die("Error!: " . $e->getMessage());
}
?>
<html>
<body>
</body>
</html>

关键修改点

  • 修复按钮语法错误:把原来的value="$data['id_img']"改成字符串拼接的形式value='" . $data['id_img'] . "',也可以用value="{$data['id_img']}"(双引号内用花括号包裹数组变量),两种写法都能让PHP正确解析数组值。
  • 添加删除请求处理:在页面开头增加了POST请求判断,当用户点击删除按钮时执行删除操作,并且通过id_u验证确保只能删除当前用户的记录,防止越权。
  • 优化细节:
    • 去掉了foreach中的引用&$data,避免不必要的内存风险;
    • 给表格添加border='1'方便调试查看结构;
    • 给按钮添加确认提示,防止误删操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:17:21