限制SQL结果的数量

时间:2013-04-17 16:19:21

标签: php jquery

所以基本上我有一个load.php页面,它接收一个位置变量并使用它来显示来自该表的那个位置的6个结果...但是我发现某处有一个错误,因为没有任何东西被返回...你能帮忙吗?

以下是代码:

  <?php 


error_reporting(0);
session_start();
include '../upload/connect.php';

$start = $_POST['start'];
$id = $_POST['id'];

$sql = mysql_query("SELECT * FROM comments WHERE id='".$id."' ORDER by id DESC LIMIT ".$start." , 6 ") or die(mysql_error());
while ($display = mysql_fetch_assoc($sql))
{
    ?>
    <div id="comments">
    <table>
    <tr>
    <td rowspan="2"><img src="../pic/logo.png" width="100px" /></td>
    <td valign="top"><p style="width:700px;font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif;font-size:13px;color:rgba(255,255,255,0.5);">&nbsp;&nbsp;&nbsp;&nbsp;Postat de <?php echo $display['user']; ?> la <?php echo $display['date']; ?> </p></td></td>
    </tr>
    <tr>
    <td width="90%" valign="top"><p style="width:700px;font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif;font-size:13px;color:white;">&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $display['comment']; ?></p>
    </tr>
    </table>
    </div>
    <?php
}


?>

和jquery:

var st = 6;// start position...
    var div_height = $("#mighty_holder").height()/2- 50;
    var doc_scroll = $(document).scrollTop();
    function loadthem (k)
    {
        $.post('../core/load.php',{start: k , id: <?php echo json_encode($id); ?>},
                function(result){
                    $("#comment_holder").append(result);
            }); 
    }

    $(document).scroll(function(){
        if ($("#mighty_holder").height()/2- 50 < $(document).scrollTop())
        {
            loadthem(st);   
            st = parseInt(st) + 7;
        }
    });

2 个答案:

答案 0 :(得分:0)

在您的Javascript代码中,您将var st = 6发送6初始化为start。然后在scroll函数中,它作为参数传递给loadthem函数,导致6在AJAX POST请求中以start: k的形式发送到PHP页面。它已恢复为$start = $_POST['start']并插入6之类的查询,生成LIMIT 6, 6。哪个不会从查询中返回任何结果。

您可能打算将st初始化为0

旁注:为了防止SQL注入,我建议您对int$_POST['id']执行$_POST['start']强制转换,假设它们都应该是数值:

$start = (int) $_POST['start'];
$id = (int) $_POST['id'];

答案 1 :(得分:0)

这是你的错误

var st = 6;// start position...

st应为0.在您的情况下,您有LIMIT 6, 6。我猜你想要LIMIT 0, 6