看板 PHP 關於我們 聯絡資訊
※ 引述《JoeHorn (獅子男)》之銘言: : ※ 引述《alpe (自由的風)》之銘言:: : id int unsigned auto-increment, : : 不過有可能會被刪掉. 所以不見的連號, : : 現在只有傳來一個 id 的情況下, : : 我該怎麼找出它的 上一筆 /下一筆啊... : : 不會要我全部抓一遍吧. : 推 alpe:我用id做編號. 現在抓特定一筆 ID 跟它上下 06/14 12:13 : → alpe:limit 在可能不連號的情況下 XD 不是你想的那樣啊 06/14 12:15 : → alpe:limit "offset",rows 06/14 12:16 : 這跟連不連號沒關係, 用 LIMIT 去取第一個比這個 ID 大的編號不難吧? : 取上一筆: : $sql = "SELECT * FROM table WHERE id < $id ORDER BY id DESC LIMIT 1 ;"; : 取下一筆: : $sql = "SELECT * FROM table WHERE id > $id ORDER BY id ASC LIMIT 1 ;"; : ======= : 題外話: : 有 LIMIT 給你用, 你就該笑了, SQL server 2000 不吃這種東西... 囧rz 假設是 view.php?id=$id ,通常就是如下: 文章內容 上一筆 | 下一筆 這樣至少要執行3次SQL查詢。 當1萬人次時,那就要3萬次SQL查詢,只為了製造出上一筆、下一筆的連結 當10萬人次時,也就是30萬次SQL查詢了。 重點在於 辛苦製造出上一筆、下一筆的連結,使用者也不一定會去點它。 不管使用者會不會點選它,就已經事先「付出」了一定量的系統資源。 可以參考一下phpbb對於這種情形的處理。 雖然phpbb將原來需要3萬次SQL查詢、減為2萬次、甚至1萬次。 但呈現上還是有稍許bug 至於資料庫取出幾筆的部分。 可以採class套件的方式來實作。 不論是MySQL、MSSQL、Oracle ... 這些都是可以處理的。 -- 世上沒有陌生人,只有還沒認識的朋友。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.31.23.130