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>
额外优化与检查点
edit.php中的数组索引优化
你在edit.php里用$row[1]、$row[2]这类数字索引取值,虽然能运行,但不如关联索引(比如$row['Key_Role'])直观,也更容易在表结构调整时出错。建议改成:<input type="text" name="newKey_Role" value ="<?php echo $row['Key_Role']; ?>">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(); }更新数据时同样使用预处理语句,避免恶意输入破坏数据库。
手动测试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
相关产品推荐
相关产品推荐

