PHP点击More View按钮在orders.php展示对应图书提交数据问题求助
功能修复方案
核心问题定位
你当前的功能异常主要是orders.php存在以下错误:
- 没有接收从URL传递过来的对应书籍ID参数
- SQL查询语句逻辑完全错误,WHERE条件不符合需求
- 表格渲染时所有字段都错误输出了ID值,没有调用对应字段
- 缺少基础安全校验,存在SQL注入风险
修复步骤
1. 可选优化(避免部分环境路由异常)
修改Availablebooks.php中的跳转链接,去掉多余的斜杠:
// 原代码 <a href="http://localhost:80/orders.php/?id=<?php echo $rows['ID']; ?>">More Views</a> // 修改为 <a href="http://localhost:80/orders.php?id=<?php echo $rows['ID']; ?>">More Views</a>
2. 替换orders.php全部代码为以下内容
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>书籍详情</title> </head> <body> <?php $servername = 'localhost'; $username = 'root'; $password = ''; $dbname = 'list'; $connect = mysqli_connect($servername, $username, $password, $dbname); if (!$connect) { die("连接失败: " . mysqli_connect_error()); } // 接收URL传递的书籍ID,转换为整数避免SQL注入 $book_id = isset($_GET['id']) ? intval($_GET['id']) : 0; if ($book_id <= 0) { die("参数错误,无效的书籍ID"); } // 修正SQL查询语句,按ID查询对应书籍 $sql = "SELECT * FROM books WHERE ID = $book_id"; $result = mysqli_query($connect, $sql); if (!$result || mysqli_num_rows($result) == 0) { die("未查询到对应书籍信息"); } $rows = mysqli_fetch_assoc($result); ?> <table align="left" border="1px" width="600px" line-height="30px" > <tr> <th colspan="4">书籍详情</th> </tr> <tr> <th>ID</th> <th>书籍名称</th> <th>作者</th> <th>可借阅数量</th> </tr> <tr> <td><?php echo $rows['ID']; ?> </td> <td><?php echo $rows['Tittle']; ?> </td> <td> <?php echo $rows['Author']; ?> </td> <td> <?php echo $rows['Copies']; ?> </td> </tr> </table> </body> </html>
额外提示
你原有的数据插入代码也存在SQL注入风险,后续正式上线建议改为参数绑定的方式处理用户提交的数据,避免数据库被恶意操作。
内容的提问来源于stack exchange,提问作者Ovie Peter
相关产品推荐
相关产品推荐

