2013-06-12 51 views
1

我有以下代碼從數據庫中拉出一個隨機值。選擇隨機值MYSQL但不是當前值

$result = mysqli_query($con,"SELECT column1 FROM table1 
ORDER BY RAND() 
LIMIT 1"); 

while($row = mysqli_fetch_array($result)) 
{ 
echo $row['column1']; 
echo "<br>"; 
} 

目前我只有大約10個值。有時他們在刷新時連續出現一次以上。

可以修改查詢以顯示一個不是當前值的隨機值嗎?

+0

隨機重複是指一些值倍。你想要的不是隨機的。 – PaulProgrammer

+0

@PaulProgrammer:你能預測訂單嗎? – Blender

+0

隨機與不可預測的不一樣。我可以反覆擲骰子,如果結果是真正隨機的,它可能連續擲出6次以上(實際上,它可能連續4次或更多次),仍然是隨機的和不可預測的。 – PaulProgrammer

回答

1

爲了做到這一點,你需要以某種方式記住最後一行。 然後做這樣的事

$result = mysqli_query($con,"SELECT column1 FROM table1 
where id_of_your_row != ".mysqli_real_escape_string($id_of_your_last_row)." 
ORDER BY RAND() 
LIMIT 1"); 

爲了記住最後一行,您可以使用會話。

您的整個代碼可能如下所示。

//會話需要bestarted

$result = mysqli_query($con,"SELECT column1 FROM table1 
where column1 != ".(isset($_SESSION["lastid"]) ? mysqli_real_escape_string($_SESSION["lastid"]) : '')." ORDER BY RAND() 
LIMIT 1"); 

while($row = mysqli_fetch_array($result)) 
{ 
echo $row['column1']; 
$_SESSION["lastid"] = $row['column1']; 
echo "<br>"; 
} 
+0

非常感謝 - 我會試試這個。看起來不錯。 – dvent

+0

這似乎沒有拉出任何值。是否有明顯的錯字? – dvent