我在使用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);
}
如果我加上休息;在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);
答案 0 :(得分:1)
在表格行的中间某处可能存在无效字符。
由于您知道它停止工作的哪一行,请尝试使用不同的ORDER BY运行SELECT以确定是否是这种情况。 :)
答案 1 :(得分:0)
您是否尝试过显示错误消息?
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
$ output可能会在到达echo之前填充memory_limit,如果display_errors为false,则不会看到错误说明内存不足。
答案 2 :(得分:0)
也许这太明显了,但...... 你检查了php.ini中的max_execution_time值吗?
在完成3000行获取之前,脚本可能正在死亡。
尝试设置
set_time_limit(0);
在脚本的开头,以避免此问题
答案 3 :(得分:-1)
$output
之后 $output = "";