$result = mysql_query($query);
$filter = array();
while($r = mysql_fetch_array($result))
{
for ( $i = 0; $i<20; $i++)
{
$filter[] = $r["name"][$i];
}
$name = implode(",", $filter);
}
以上是主要代码的一部分。我想限制循环只运行20次。如果超过20,它应该省略...但这给了我一些奇怪的结果......我知道我犯了什么错误但在哪里?
答案 0 :(得分:3)
mysql_fetch_array
仅从查询结果中提取单行数据。看起来你试图从结果中只获取一个字段,所以你需要这样的东西:
$i = 0;
while($row = $mysql_fetch_assoc($result)) {
$i++
if ($i >= 20) {
break;
}
$filter[] = $row['name'];
}
$name = implode(",", $filter);
但这是非常低效的。为什么不让MySQL自己进行行限制?
SELECT your,fields,here
FROM yourtable
WHERE ...
ORDER BY ...
LIMIT 20
然后你只需要20行开始,而不是强迫mysql获取所有 - 然后很多 - 超过20。
答案 1 :(得分:1)
你没有进入下一行
$result = mysql_query($query);
$filter = array();
$i = 0;
while($r = mysql_fetch_array($result))
{
$filter[] = $r["name"][$i]; }
$name = implode(",", $filter);
if(++$i == 20)
{
break;
}
}