此SQL语句中的语法是否正确?

时间:2018-06-07 08:52:54

标签: php mysql sql ajax

$data_sql = "SELECT * FROM teachers_table LIMIT {$limit} OFFSET {$offset}";

返回以下错误:

错误:您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便使用“OFFSET偏移量”附近的权限。在第1行

我之前在ajax中创建了两个变量:

$.ajax({
             type: "GET",
                url: "mini_profiles.php",
                data: {
                    'offset':0,
                    'limit':9
                      },
                success:function(data){
                    $('body').append(data);
                    flag += 9;
                }

然后我分配给我试图在SQL代码中调用的字符串值:

 $limit = 'limit';
 $offset = 'offset';

我创建变量并将它们分配到语句中所做的似乎是准确的吗?我意识到我收到了错误,因此显然存在某个问题,但不确定我的代码的哪一部分导致了问题。

非常感谢您阅读本文。

更新到原始帖子以包含完整的ajax功能:

<script type="text/javascript">

 <!--make the ajax call when page loads-->
$(document).ready(function()
{
     var flag = 0;

     <!--pass the two parameters, offset and limit-->   
     $.ajax({

            type: "GET",
            url: "mini_profiles.php",
            data: {
                'offset':0,
                'limit':9
                  },
            success:function(data){
                $('body').append(data);
                flag += 9;
            }

            });
            //Every time when we scroll we check the current value of scrollbar 
            //and if it has reached the bottom of the page
            $(window).scroll(function(){
                if($(window).scrollTop()>= $(document).height() - $(window).height()){
            //this is what happens at the bottom - same ajax function but we now want to offset by+=3 everytime
            //so above we create a variable and increase by three whenver the ajax call is successful       

                     $.ajax({

                    type: "GET",
                    url: "mini_profiles.php", //this is the ajax function calling the get_data.php
                    data: {
                        'offset':flag,
                        'limit':9
                          },
                    success:function(data){
                        $('body').append(data);
                        flag += 9;
                    }

                    });


                }
            });
});

</script>

1 个答案:

答案 0 :(得分:3)

您需要将从AJAX调用传递的值转换为变量

$limit = $_GET['limit']; 
$offset = $_GET['offset'];

$data_sql = "SELECT * FROM teachers_table LIMIT {$limit} OFFSET {$offset}";
  

虽然这很容易SQL Injection Attack   甚至if you are escaping inputs, its not safe!   在MYSQLI_PDO API

中使用prepared parameterized statements

您不会说您正在使用哪种API,因此我无法向您展示如何使用参数化和绑定查询。