WordPress中AJAX无法显示SQL查询结果的技术求助
问题排查:SQL查询结果无法显示的解决方案
嘿,我来帮你梳理下问题!你的代码里有几个关键细节出错了,导致SQL查询结果没法正常展示,咱们一步步来修正:
1. SQL执行方法调用错误
你写的$bdd->execute;少了一对括号,正确的写法应该是$bdd->execute();。没有括号的话,这个执行方法根本不会被调用,查询自然无法运行——这也是为什么你能看到blabla1和blabla2,但可能看不到blabla3(因为此处会触发错误进入catch块,但你没输出错误信息)。
2. 返回字段与查询字段不匹配
你SQL查询的是from_mail字段,但最后尝试返回$result["chat"],这个字段在查询结果里根本不存在!应该改成$result["from_mail"],如果需要获取多条结果,还要用fetchAll()来遍历所有数据。
3. PHP响应输出方式错误
你的AJAX请求期望接收HTML格式的响应,但PHP函数里用了return来返回结果——return的内容不会输出到HTTP响应中,AJAX根本拿不到这个值。必须用echo来输出结果,同时如果有多个查询结果,需要把它们拼成合法的HTML字符串再输出。
修正后的PHP代码示例
function display_urgent(){ try { echo "blabla1"; $db = openBDD(); //数据库连接函数 $bdd = $db->prepare("SELECT from_mail FROM test_insert"); $bdd->execute(); // 补上执行方法的括号 echo "blabla2"; // 获取所有查询结果(关联数组格式) $results = $bdd->fetchAll(PDO::FETCH_ASSOC); echo "blabla3"; // 将结果拼接成HTML输出 foreach($results as $row) { // 用htmlspecialchars防止XSS攻击 echo "<p>" . htmlspecialchars($row["from_mail"]) . "</p>"; } // 如果只需要第一条结果,也可以这么写: // if(!empty($results)) { // echo htmlspecialchars($results[0]["from_mail"]); // } }catch (PDOException $e) { // 错误信息也要echo出来,AJAX才能接收到 echo "查询错误:" . $e->getMessage(); } }
额外调试建议
- 打开浏览器开发者工具(F12),切换到Network标签,找到你的AJAX请求,查看Response内容,就能直观看到PHP返回的具体信息,快速定位问题。
- 在PHP文件开头加上
error_reporting(E_ALL); ini_set('display_errors', 1);,开启错误显示,方便排查语法或逻辑错误。
内容的提问来源于stack exchange,提问作者ben
相关产品推荐
相关产品推荐

