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

HTML表格编辑链接无法连接MySQL数据库的问题求助

解决HTML表格中MySQL编辑链接无法传递ID的问题

核心问题:变量解析错误

你在index.php的表格里写的编辑链接存在语法问题:

<td><a href='edit.php?edit=$row["id"]'>edit</a></td>

这里用单引号包裹了整个链接地址,PHP不会解析单引号内部的变量,所以实际生成的链接是edit.php?edit=$row["id"],而非携带真实ID的有效地址,这就是ID无法传递到edit.php的直接原因。

修复方法

把编辑链接改成以下两种正确写法之一:

写法1:用双引号包裹链接,嵌入变量输出

<td><a href="edit.php?edit=<?php echo $row['id']; ?>">edit</a></td>

如果你的PHP环境支持短标签,还可以简化成:

<td><a href="edit.php?edit=<?= $row['id'] ?>">edit</a></td>

写法2:单引号拼接变量输出

<td><a href='edit.php?edit=<?php echo $row["id"]; ?>'>edit</a></td>

额外优化与检查点

  1. edit.php中的数组索引优化
    你在edit.php里用$row[1]、$row[2]这类数字索引取值,虽然能运行,但不如关联索引(比如$row['Key_Role'])直观,也更容易在表结构调整时出错。建议改成:

    <input type="text" name="newKey_Role" value ="<?php echo $row['Key_Role']; ?>">
    
  2. SQL注入风险修复
    你的代码直接把用户输入($_GET["edit"]、$_POST内容)拼接到SQL语句中,存在严重的SQL注入漏洞。建议改用预处理语句,比如查询数据时:

    if (isset($_GET["edit"])) {
        $id = $_GET["edit"];
        $stmt = $conn->prepare("SELECT * FROM tmdata WHERE id=?");
        $stmt->bind_param("i", $id); // "i"表示参数为整数类型
        $stmt->execute();
        $res = $stmt->get_result();
        $row = $res->fetch_assoc();
    }
    

    更新数据时同样使用预处理语句,避免恶意输入破坏数据库。

  3. 手动测试ID的正确方式
    你之前尝试的<td><a href='edit.php?edit=$row[184]'>edit</a></td>是错误的,正确的手动测试应该直接写具体ID值:

    <td><a href='edit.php?edit=184'>edit</a></td>
    

总结

先修复编辑链接的变量输出问题,这是ID无法传递的核心原因。之后建议优化代码的可读性和安全性,避免后续出现更多潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:03:44