PHP SQL查询之谜

时间:2019-02-25 14:25:13

标签: php mysql

这种令人头疼的sql按摩没有错误,但是没有在查询中正确插入$ zvv变量,就像影响结果一样,好像它是“”,但是它确实具有有效的字符串值,但是它没有进入查询。

看到此sql有什么问题吗?

$sqlQuery = " SELECT * FROM tbl_staff WHERE status =' "   .  $zvv .  " ' limit 
" . ($lowerLimit) . " ,  " . ($perPageCount) . " ";

4 个答案:

答案 0 :(得分:1)

尝试一下:

"SELECT * FROM tbl_staff WHERE status='$zvv' LIMIT 
    $lowerLimit , $perPageCount ";

应该做到这一点。

答案 1 :(得分:1)

您的串联中有空格。同样,如果使用双引号,则将打印出变量的内容。


$sqlQuery = "
     SELECT * 
     FROM 
        tbl_staff 
     WHERE 
        status ='$zvv' 
      LIMIT 
        $lowerLimit , $perPageCount ";

答案 2 :(得分:0)

查询中有空格:

$sql = " SELECT * FROM tbl_staff WHERE status =' "   .  $zvv .  " ' limit " . ($lowerLimit) . " ,  " . ($perPageCount) . " ";
                                           -----^           -----^

因此,如果$zvv的值为'abc',则您在查询中使用的值为status=' abc ',由于空格,该值是不相同的。清理结果,这就是我更喜欢写的结果:

$sqlQuery = "SELECT * FROM tbl_staff 
             WHERE status='".  $zvv ."' 
             LIMIT ". $lowerLimit.",".$perPageCount;

答案 3 :(得分:0)

谢谢,在这里得到了两只鸟,只有一块石头,其中一些应该比我当前的查询更好,而且准备好的语句似乎是使用这种反复试验方法克服摔跤字符的好方法,并且可以更安全地从SQL中获得注射风险。

该错误以一种欺骗性的方式阻止了例程的其余部分,在我看起来更近之前,它似乎一直起作用,因为这是我第一次迷惑AJAX和分页。

此建议应在将来极大地节省一些真正的sql-roulette头痛时间,这很挑剔,但我现在知道为什么。

谢谢大家。