PHP+AJAX程序无法加载数据库中作者书籍数据至表格,求排查建议
排查与修复:PHP+AJAX书籍数据无法显示的问题
嘿,我帮你梳理了代码里的关键问题,应该能解决数据不显示的情况:
1. 最致命的SQL查询错误
你第二个查询里的条件写死成了空字符串!看这里:
$q2 .= " AND wrote.author_number = ' ' ";
这相当于找author_number为空的作者,完全没用到你从URL获取的$authorid,当然查不到匹配数据。赶紧改成用传入的作者ID:
$q2 .= " AND wrote.author_number = " . $authorid;
如果要更安全(防止SQL注入),推荐用预处理语句,代码重构如下:
$q2 = "SELECT wrote.author_number As ANo, wrote.book_code As BookCd, book.book_title As Title FROM wrote INNER JOIN book ON wrote.book_code = book.book_code WHERE wrote.author_number = ? ORDER BY book.book_title"; $stmt = mysqli_prepare($dbc, $q2); mysqli_stmt_bind_param($stmt, "i", $authorid); // "i"表示参数是整数类型 mysqli_stmt_execute($stmt); $r2 = mysqli_stmt_get_result($stmt);
2. 循环逻辑优化+空数据提示
你现在的while循环写法有点冗余,而且如果查询没结果,表格里啥都没有,用户根本分不清是没数据还是出错了。改成这样更清晰:
// 替换原来的while循环部分 if (mysqli_num_rows($r2) > 0) { while ($row = mysqli_fetch_array($r2)) { echo "<tr>"; echo "<td>" . htmlspecialchars($row['BookCd']) . "</td>"; echo "<td>" . htmlspecialchars($row['Title']) . "</td>"; echo "</tr>"; } } else { echo "<tr><td colspan='2'>该作者暂无书籍记录</td></tr>"; }
另外加了htmlspecialchars()是为了防止XSS攻击,让代码更安全。
3. 增加错误调试信息
你现在没有任何数据库查询的错误处理,万一SQL写错或者数据库连接出问题,你根本不知道哪里错了。给每个查询加上错误检查:
// 比如第二个查询后(如果用普通查询的话) $r2 = mysqli_query($dbc, $q2); if (!$r2) { die("查询失败:" . mysqli_error($dbc)); }
这样一旦查询出错,会直接显示错误信息,方便你快速定位问题。
4. AJAX相关排查(因为你提到用了AJAX)
如果是通过AJAX调用这个PHP页面,还要确认这几点:
- AJAX请求的URL是否正确带上了
authorid参数,比如yourpage.php?authorid=123 - 打开浏览器控制台(F12),查看Network标签里的AJAX请求,是否返回200状态码,响应内容是否符合预期
- 可以在PHP开头加一句
var_dump($_GET['authorid']);,看看是否正确获取到了参数值
5. 冗余代码优化(可选)
你第一个查询SELECT * FROM author只取了一行,但根本没用到,比如表格标题可以显示作者名字,改成这样更合理:
$query = "SELECT author_name FROM author WHERE author_number = " . $authorid; $r = mysqli_query($dbc, $query); if (mysqli_num_rows($r) > 0) { $row = mysqli_fetch_array($r); $authorName = $row['author_name']; } else { echo "未找到该作者<br>"; exit; // 没有作者的话直接终止,不用执行后面的查询 } // 然后表格标题改成: echo "<table border='1'><caption>Titles for " . htmlspecialchars($authorName) . "</caption>";
按上面的步骤改完,应该就能正常显示数据了!
内容的提问来源于stack exchange,提问作者jGaines
相关产品推荐
相关产品推荐

