Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 打印无意义的文本行会阻止页面下载,但太多的行会阻止获取mysql表中的所有条目。为什么?_Php_Sql_Mysql - Fatal编程技术网

Php 打印无意义的文本行会阻止页面下载,但太多的行会阻止获取mysql表中的所有条目。为什么?

Php 打印无意义的文本行会阻止页面下载,但太多的行会阻止获取mysql表中的所有条目。为什么?,php,sql,mysql,Php,Sql,Mysql,你们中有谁能帮助我理解我访问此页面时的行为吗 <html> <body> <?php $liendb = mysql_connect("localhost","",""); mysql_select_db ("test"); for($i = 0; $i < 418; ++$i) { echo("Any old text<br />");

你们中有谁能帮助我理解我访问此页面时的行为吗

<html>

    <body>

    <?php
        $liendb = mysql_connect("localhost","","");

        mysql_select_db ("test");
        for($i = 0; $i < 418; ++$i)
        {
            echo("Any old text<br />");
        }


        $resultatSQL = mysql_query("SELECT uid FROM nombres ORDER BY uid");

        while($tab = mysql_fetch_array($resultatSQL, MYSQL_ASSOC))

        {
            echo("<p>".$tab['uid']."</p>");
            echo("<br />\n");

        }

        mysql_close();

    ?>

    </body>
</html>
理论上,我认为这一页应该打印418行“任何旧文本”,然后打印表“nombres”的所有条目,所以数字1到42。实际上,确实如此。但如果我改变那个神奇的数字,418,问题就发生了

如果我使用的数字小于418,firefox会提供下载页面的功能,而不仅仅是显示给我。。如果我下载了它,我会得到一个空白文件

如果使用大于418的数字,则不会将所有条目都输入表“nombres”。例如,当我使用419时,我只得到数字1到41。当我使用420时,我只得到1到40的数字。一直到454年,我只得到1号。页面的其余部分,包括数字后面的所有内容,都被截断,包括结束正文和html标记

如果我使用455或更多,我根本就得不到任何数字

我的问题是:

还有其他人能复制这种行为吗? 你如何解释这种行为

我使用的服务器是apache(实际上是xampp) 我打印了phpinfo()并要求firefox保存生成的页面。。这是压缩的。
您使用什么Web服务器?阿帕奇? 是否安装了PHP的extennions?尝试将flush()放在echo之后,看看会发生什么。
如果你能给你看phpinfo(),它可能会有帮助。

对我来说没问题。它似乎可以打印出“任何旧文本”的所有预期行以及之后的所有数字


我想这可能是一个web服务器或PHP配置错误,但我不知道从哪里开始。我试过了,一切正常


我唯一注意到的是,这个页面大约有8kB。您的Web服务器(您使用的是哪个Web服务器?)中是否有一些可以连接8kB页面大小的神奇配置?

从您的代码判断,问题可能在于mysql连接。在使用mysql连接之前,您应该始终检查它是否成功或失败。试着像这样重写代码:

<html>
    <body>
    <?php
        //open connection
        $liendb = mysql_connect("localhost","","");
        if ( ! $liendb )
        {
          die('Could not connect: ' . mysql_error());
        }

        //select database
        $select_db = mysql_select_db ("test", $liendb);
        if ( ! $select_db )
        {
          die ("Failed to do select the database: ' . mysql_error());
        }

        //print 'magic' lines
        for($i = 0; $i < 418; ++$i)
        {
            echo("Any old text<br />");
        }

        //get table's content
        $resultatSQL = mysql_query("SELECT uid FROM nombres ORDER BY uid", $liendb);
        if ( ! $resultatSQL )
        {
          die('Invalid query: ' . mysql_error());
        }

        //process table content
        while($tab = mysql_fetch_array($resultatSQL, MYSQL_ASSOC))
        {
            echo("<p>".$tab['uid']."</p>");
            echo("<br />\n");
        }
        mysql_close($liendb);
    ?>
    </body>
</html>


你能重新命名这个问题吗?如果你有一个更有意义的标题,你可能会得到更多的答案。当你使用418或更大的数字时,你的浏览器看到的页面源中有什么?它是否被截断以消除结束正文和HTML标记?结果页面的大小是否总是相同的?另外,您是否只在使用PHP和MySQL时才看到这个问题?如果使用PHP重复打印某些文本(不使用MySQL),是否会出现此问题?如果你有包含相同内容的纯HTML,问题会出现吗?@Josh:我试图重新命名这个问题。。我不知道我说得有多清楚。。如果你有一个更好的标题,我很乐意在中编辑它@杰夫:是卡车。在方程中没有mysql的情况下,我没有任何问题。如果我用普通的HTML.Apache编写相同的代码,问题就不会出现,实际上它是xampp。我在最初的问题中编辑了这个。我还添加了phpinfo的结果。。你建议在哪里加同花顺?第一声回声还是第二声回声?或者两者都有?我不知道。。但是我在我的原始问题中添加了phpinfo的结果,也许你会认识到这样的配置?你说它工作正常。你试过把号码(418)改成其他号码吗?是的,我试过的所有号码都适用。我尝试了各种方法,如1200、1000,都可以。我尝试了您的代码,但得到一个警告:---警告:未知:1个结果集未释放。使用mysql\u free\u result来释放在第0行的Unknown中使用mysql\u query()请求的结果集——但更好的是,问题似乎已经停止了!无论我打印多少无用的行,我都会得到所有的表格条目!我不知道你的代码的哪一部分解决了这个问题,但我会在下一步尝试找出答案。无论如何,非常感谢!顺便说一句,你知道释放结果集意味着什么吗?经过几次测试,我发现解决我问题的代码部分是在mysql\u close语句中添加$liendb。。。你能给我解释一下吗?因为坦率地说,我不明白为什么这个语句会影响代码前面发生的事情……您可以在这里阅读函数定义和用法:可能在不传递
$liendb
的情况下,该语句尝试关闭所有连接,这可能会导致执行过早终止,apache将页面作为php文件,而不是网页。我猜您的xampp中的php模块有bug,或者可能是php mysql客户端。升级到最新版本可能会解决这些问题。
<html>
    <body>
    <?php
        //open connection
        $liendb = mysql_connect("localhost","","");
        if ( ! $liendb )
        {
          die('Could not connect: ' . mysql_error());
        }

        //select database
        $select_db = mysql_select_db ("test", $liendb);
        if ( ! $select_db )
        {
          die ("Failed to do select the database: ' . mysql_error());
        }

        //print 'magic' lines
        for($i = 0; $i < 418; ++$i)
        {
            echo("Any old text<br />");
        }

        //get table's content
        $resultatSQL = mysql_query("SELECT uid FROM nombres ORDER BY uid", $liendb);
        if ( ! $resultatSQL )
        {
          die('Invalid query: ' . mysql_error());
        }

        //process table content
        while($tab = mysql_fetch_array($resultatSQL, MYSQL_ASSOC))
        {
            echo("<p>".$tab['uid']."</p>");
            echo("<br />\n");
        }
        mysql_close($liendb);
    ?>
    </body>
</html>