如果我检索所有行,mysql的fetch结果是空的


The mysql fetch results are empty if I retrieve all rows

我有一些问题返回值从服务器与php + mysql。

这是我的代码

    $result = mysql_query("SELECT * FROM Nicknames", $con);
    if (mysql_real_escape_string($_POST['Create']) == "NICKNAME") {
        $output;        
        while ($row = mysql_fetch_assoc($result)) {
            if ($row['Taken'] == '0')  $output = $output . $row['Nickname'] . ",";
        }
        echo substr($output, 0, -1);
    }   

如果我添加break;在while循环中,它工作得很好,我只得到表的一行。相反,如果我想返回所有3000行,我只从服务器获得一个空答案。

如果表有10行,它可以工作。

我想知道这是关于行数,还是因为最终的特殊字符。

感谢

它工作到1330行,如果我试图获得更多,我得到一个空的结果

$counter = 0;       
        while ($row = mysql_fetch_assoc($result)) {
            if ($row['Taken'] == '0')  $output = $output . $row['Nickname'] . ",";
            if ($counter == 1330) break;
            $counter++;
        }
        echo substr($output, 0, -1);

在表行中间的某个地方可能有一个无效字符。

既然您知道它在哪一行停止工作,请尝试使用不同的ORDER BY运行SELECT以确定是否存在这种情况。:)

您是否尝试过显示错误消息?

  error_reporting(E_ALL|E_STRICT);
  ini_set('display_errors', true);

$output可能在到达echo之前就已经填满了memory_limit,如果display_errors为false,则不会看到内存不足的错误。

也许这太明显了,但是…你检查过php.ini中的max_execution_time值了吗?

可能脚本在完成3000行读取之前就死了。

尝试设置

set_time_limit(0);

$output后的if条件应为$output = "";