2010-10-18 46 views
1

我有這樣的代碼:PHP不重複上次取

$result = mysql_query("SELECT * FROM quote ORDER BY RAND() LIMIT 1") or die(mysql_error()); 

$row = mysql_fetch_array($result); 

echo $row['frase']; 

它echo's隨機「frase」每次查詢的時間。

我想要做的是避免在連續查詢中得到相同的結果。

爲了讓自己清楚,如果在我的數據庫從來就得到了:

1 a 
2 b 
3 c 

如果從echo $row['frase'];a的下一個結果不容被a

我希望我自己清楚,如果不是請評論,我會擴大!

提前致謝!

順便說一句:抱歉@deceze @zerkms @ Dr.Molle,因爲最後一個問題是一團糟!無妨包換,只是加入了狂歡:)

編輯小白:

要回答傑森麥克裏其實我這樣稱呼它:

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","ajax_info.php",true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<div id="myDiv"><h2>Let AJAX change this text</h2></div> 
<button type="button" onclick="loadXMLDoc()">Change Content</button> 

</body> 
</html> 
+0

在頁面重新加載此查詢或稍後在腳本中使用? – 2010-10-18 02:02:25

+0

我編輯了我的問題。現在呢?謝謝!! – Trufa 2010-10-18 02:07:21

回答

2

因爲這最後的查詢需要堅持跨越頁面刷新,你需要使用會話。沿着這些路線的東西:

session_start(); 

if (empty($_SESSION['lastresult'])) { 
    $_SESSION['lastresult'] = null; 
} 

$query = "SELECT * FROM `quote` WHERE `id` != '%s' ORDER BY RAND() LIMIT 1"; 
$query = sprintf($query, mysql_real_escape_string($_SESSION['lastresult'])); 

$result = mysql_query($query) or die(mysql_error()); 

$row = mysql_fetch_array($result); 

$_SESSION['lastresult'] = $row['id']; 

echo $row['frase']; 

您可能需要存儲在會話中的最後x結果,並使用NOT IN()在你的查詢,以避免每秒(第三,第四,......)的報價是相同的。

+0

謝謝deceze我正在嘗試它! – Trufa 2010-10-18 02:49:25

+0

絕對太棒了非常感謝你! – Trufa 2010-10-18 03:05:16

+0

根據你在做什麼,你應該避免使用ORDER BY RAND(),而是計算一個介於0和結果數量(或等價值)之間的隨機位置,並在應用程序層中對這些數據進行洗牌以避免使mysql隨機化數據集,然後通過要求第一個條目大於或小於該隨機值,在查詢中使用該值。它在MySQL上更好,你可以在會話中保存數據,所以你可以加快創建有用的隨機頭寸從MySQL中選擇。 – MyStream 2011-10-11 22:42:59