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

SQL查询无返回结果排查:网站表单提交无响应问题求助

表单提交无响应问题排查

数据库表结构

USERS表

userIDObject1Object2
11abc123a
22def123b

POSTS表

IDObject2
12123a
43123b

问题场景

我正在调试网站表单,表单接收手动输入的密钥,提交后执行PHP函数,预期逻辑是:获取输入的Object1,关联到对应的Object2,检查Posts表中该Object2对应的未删除条目,返回结果1或0。但点击提交后表单无任何反应,既无结果也无错误提示。在phpMyAdmin中测试查询时,把users.Object1=$request->'Object1'替换为users.Object1='1abc'能得到正确结果“12”,但嵌入网站PHP文件后就失效。

关联代码

PHP处理函数

public function claim(Request $request){

      $post = "SELECT posts.id FROM posts INNER JOIN users ON users.Object2=posts.Object2 WHERE   posts.is_deleted='No' && users.Object1=$request->'Object1'";
      $result = mysql_query($post);
      
      if($result->num_rows > 0) {
                
            return 1;
      }
      else{
         return 0;
      }
   }

AJAX提交代码

$.ajax({
            url: "http://*********",
            type: 'POST',
            data: {key},
            success: function(response){
            console.log(response)
           if(response == 1){
            $('.message').text('Success')
            $('.message').removeClass('text-danger')
            $('.message').addClass('text-success')
            $('#pdf').show();
            $('#button').hide();

问题修复步骤

1. 修正PHP语法与SQL注入风险

  • 原代码中$request->'Object1'是错误语法,Laravel中正确获取请求参数的方式是$request->input('Object1')或$request->Object1。
  • 直接拼接SQL会导致语法错误和注入风险,必须用参数绑定重构查询,同时废弃已淘汰的mysql_query函数,改用Laravel DB门面:
    public function claim(Request $request){
        $object1 = $request->input('Object1');
        $result = DB::select("SELECT posts.id FROM posts INNER JOIN users ON users.Object2=posts.Object2 WHERE posts.is_deleted='No' AND users.Object1 = ?", [$object1]);
        
        return count($result) > 0 ? 1 : 0;
    }
    

2. 修复AJAX数据传递与错误处理

  • 原AJAX中data: {key}参数不明确,需指定对应表单字段名,比如输入框name为Object1则写成:
    data: { Object1: $('input[name="Object1"]').val() },
    
  • 补充错误回调,方便排查请求失败原因:
    $.ajax({
        url: "http://*********",
        type: 'POST',
        data: { Object1: $('input[name="Object1"]').val() },
        success: function(response){
            console.log(response);
            if(response == 1){
                $('.message').text('Success');
                $('.message').removeClass('text-danger').addClass('text-success');
                $('#pdf').show();
                $('#button').hide();
            } else {
                $('.message').text('Failed');
                $('.message').removeClass('text-success').addClass('text-danger');
            }
        },
        error: function(xhr, status, error){
            console.error('请求错误:', error);
            $('.message').text('请求失败,请检查网络或联系管理员');
            $('.message').removeClass('text-success').addClass('text-danger');
        }
    });
    

3. 处理Laravel CSRF验证

  • POST路由需要CSRF令牌,在AJAX请求中添加头部:
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    
  • 同时在HTML头部插入CSRF元标签:
    <meta name="csrf-token" content="{{ csrf_token() }}">
    

4. 确保响应格式纯净

  • 避免PHP方法输出多余内容,可明确返回纯文本或JSON:
    return response()->json(count($result) > 0 ? 1 : 0);
    

内容的提问来源于stack exchange,提问作者Justin Herb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:30:45