2013-03-02 59 views
0

我在下面有下面的代碼。目標是執行select語句,顯示結果,然後再次執行語句。我無法讓它正常工作。當代碼在沒有循環的情況下執行時,它可以正常工作,但是當代碼在循環內部時,它不起作用。目標是讓它永遠循環,但在「當前循環運行」期間顯示每條select語句的結果。我錯過了什麼?我希望它顯示循環的每個「run through」的結果,然後返回並再次執行,同時每次成功循環迭代時將結果發送到瀏覽器。我試過ob_implicit_flush和flush命令。在PHP和Mysql中,如何在循環完成之前執行Mysql語句並顯示結果?

在此先感謝。

$query = "SELECT * FROM dict WHERE ID in (FLOOR(1 + (RAND() * 662337))) "; 

for ($i=1; $i =>1; $i++) { 

$result = mysql_query($query); 
$row = mysql_fetch_array($result); 
echo $row['word']; 


}; 
+0

爲什麼你希望它永遠循環下去?嘗試循環只有10次,看看會發生什麼 – ElefantPhace 2013-03-02 21:22:12

+0

因爲它永遠循環服務器將永遠不會回答客戶端 – 2013-03-02 21:23:19

回答

0

我認爲最好的方法是使用php/ajax。

<html> 
    <head> 
    <script> 
    function showQueryResult() 
    { 
    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("txtHint").innerHTML+=xmlhttp.responseText; 
     } 
     } 
    xmlhttp.open("GET","getQuery.php",true); 
    xmlhttp.send(); 
    } 
    </script> 
    </head> 
<body> 
<script>setInterval("showQueryResult()",100); 
<div id="txtHint" ></div> 
</body> 
</html> 

和你getQuery.php頁面應該是這樣的:

<?php 
$query = "SELECT * FROM dict WHERE ID in (FLOOR(1 + (RAND() * 662337))) "; 

$result = mysql_query($query); 
$row = mysql_fetch_array($result); 
echo $row['word']; 

?> 
+2

恢復一個結果,我很確定。他希望它能夠不斷運行並且每次都能得到一個新詞 – ElefantPhace 2013-03-02 21:24:58

+0

哦,現在我明白了 – MIIB 2013-03-02 21:26:08

+0

我現在使用setInterval編輯了我的代碼,你可以實現你想要的 – MIIB 2013-03-02 21:35:29

相關問題