0

我在下面有以下代码。目标是执行一个 select 语句,显示结果,然后再次执行该语句。我无法让它正常工作。当代码在没有循环的情况下执行时,它可以正常工作,但是当代码在循环内时,它就不起作用了。目标是让它永远循环,但在“当前循环运行”期间显示每个选择语句的结果。我错过了什么?我希望它显示循环的每个“运行”的结果,然后在每次成功的循环迭代将结果发送到浏览器时返回并再次执行。我试过 ob_implicit_flush 和 flush 命令。

提前致谢。

$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'];


};
4

1 回答 1

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'];

?>
于 2013-03-02T21:22:32.587 回答