我有一些问题返回值从服务器与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 = "";