2013-04-17 135 views
0

所以基本上我有一個load.php頁面接收位置的變量,並用它來從表中的位置顯示6個結果......但我看到某處有一個錯誤,因爲沒有東西回來。 ...你們能幫忙嗎?限制SQL的結果數

下面是代碼:

<?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; 
     } 
    }); 
+1

實際上得到運行什麼SQL語句?您是否驗證了該聲明是正確的,並且手動運行? –

+0

這一個'$ SQL =請求mysql_query( 「SELECT * FROM評論WHERE ID = '」 $ ID。 「' ORDER按id DESC LIMIT」 $開始「,6」。)或死亡(mysql_error());' – southpaw93

+0

在while()循環中丟失大括號''循環 – verbumSapienti

回答

0

在JavaScript代碼中,你初始化var st = 6發送6start。然後在scroll功能它作爲參數傳遞,導致6loadthem功能被髮送作爲start: k在AJAX POST請求到PHP頁面。它恢復爲$start = $_POST['start']並插入查詢如6導致LIMIT 6, 6。哪個不會返回查詢的任何結果。

你大概意思初始化st0

在一個側面說明:防止SQL注入,我建議你執行int投兩個$_POST['id']$_POST['start'],假設他們應該是這兩個數值:

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

這個東西在我的主頁上我已經從該表(SQL QUERY)回顯了6條記錄,並且每當我滾動到接近頁面我希望從該頁面獲得另外6個結果,從我最後一次離開的位置開始,這意味着結果7 + 6以上,這就是我想通過初始化'st = 6;' – southpaw93

+0

根據文檔,'LIMIT 6,6'與'LIMIT 6 OFFSET 6'相同,它將返回6行,從第6行開始。所以,這應該是完全正確的? –

+0

是的,但它不會返回任何東西,我不明白爲什麼......我跑到phpmyadmin的SQL並完美運行...不明白爲什麼它不顯示任何東西... – southpaw93

0

這是你的錯誤

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

st應該是0.在你的情況下,你有LIMIT 6, 6。我猜你想LIMIT 0, 6

+0

是的,但如果我不想顯示前6個結果? – southpaw93