2013-07-29 42 views
0

這是我的腳本MySQL的未來以前的記錄問題

<?php 

if(isset($_GET['id'])) 
{ 
    $id = $_GET['id']; 
} 
else 
{ 
    $id = 1; 
} 

    $random = $conn->query("SELECT * FROM records ORDER BY RAND()"); 
    $row = $random->fetch(); 

    $stmt_1 = $conn->prepare("SELECT * FROM records WHERE id > ? ORDER BY id ASC LIMIT 1"); 
    $stmt_1->bindValue(1,$id); 
    $stmt_1->execute(); 
    $stmt_1->setFetchMode(PDO::FETCH_ASSOC); 
    $row = $stmt_1->fetch(); 
    $id = $row['id']; 

    $stmt_1 = $conn->prepare("SELECT * FROM records WHERE id < ? ORDER BY id DSC LIMIT 1"); 
    $stmt_1->bindValue(1,$id); 
    $stmt_1->execute(); 
    $stmt_1->setFetchMode(PDO::FETCH_ASSOC); 
    $row = $stmt_1->fetch(); 
    $id = $row['id']; 

    ?> 

但是我有一個問題的。例如,我有4條記錄在數據庫:

ID String 
1 Test-1 
2 Test-2 
3 Test-3 
4 Test-4 

查詢工作正常,它給我的下一個記錄,但不是我把ID一樣,如果我把ID = 1返回ID 2或ID = 2分返回信息爲ID 3,結果不準確。所以我的問題是我該怎麼做id來返回正確的結果不是+1。我知道它從0開始計數,我想解決,在我的劇本我希望把它從1

回答

1

開始更換這個

$id = 1; 

通過

$id = 0; 

或更換這

SELECT * FROM records WHERE id > ? 

通過

SELECT * FROM records WHERE id >= ? 
            ^--//-will look for id equal to 1 or bigger 
+0

非常感謝你,現在它的工作,但我的超級鏈接 Next廣東話現在的工作.. –

+0

在你的超鏈接你想要的id是什麼?相同的ID或ID + 1? –

+0

歡迎你! 。 –

0

爲什麼你不改變你的查詢

編輯:作爲記錄被刪除查詢將無法正常工作。

$stmt_1 = $conn->prepare("SELECT * FROM records WHERE id = ?"); 
$stmt_1->bindValue(1,$id +1); 
$stmt_1->execute(); 

因此,您將獲得下一個最高ID的記錄。

只是一個提示,以優化您的查詢。 在表定義中使用auto_increment還有一個問題。如果你這樣做,你shold記住這個MySQL-順序按一個開始計算的主鍵

希望它可以幫助

+0

感謝您的提示。是ID是A_I,但我不認爲與$ stmt_1-> bindValue(1,$ id +1);我會得到下一個可能的reccord如果下一個id被刪除,該怎麼辦? –

+0

你說得對。沒有提到這種情況。對不起 – ZeusNet