2012-06-10 59 views
0

如何将mysql_fetch_array指针移动到while循环中间? 是这样的:移动mysql_fetch_array指针

while ($subject = mysql_fetch_array($subject_qry)) 
{ 
$output = "<div class=\"left\" id=\"{$subject['id']}\"></div>"; 
    next($subject); 
    $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>"; 
    return $output; 
    } 
+2

请停止与古'mysql_ *'函数编写新的代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是一个很好的PDO相关教程](http://goo.gl/vFWnC)。 –

回答

0

,而你正在提取数据库中的数据,则不能做到这一点。你还没有阅读mysql_fetch_array()的下一行,所以你不能跳到下一行。

您必须首先填充所有结果的数组才能操作数组的“索引”。或者,您可以在循环中执行额外的mysql_fetch_array()以读取下一行。

1

如何:

$counter = 0; 
while ($subject = mysql_fetch_array($subject_qry)) 
{ 
    if ($counter % 2 == 0) 
    { 
    $output = "<div class=\"left\" id=\"{$subject['id']}\"></div>"; 
    } 
    else 
    { 
    $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>"; 
    } 
    // do something with $output here... 
    $counter ++; 
} 

或者你可以实现一个布尔值相同的结果:

$left = true; 
while ($subject = mysql_fetch_array($subject_qry)) 
{ 
    if ($left) 
    { 
    $output = "<div class=\"left\" id=\"{$subject['id']}\"></div>"; 
    } 
    else 
    { 
    $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>"; 
    } 
    // do something with $output here... 
    $left = !$left; 
} 
+0

我想获得$ subject的下一行,$ counter如何移动指针? – Mosaic

+0

我想这取决于你想要达到的目标。如果你只想用偶数行做一件事,而用奇数行做另一件事,那么我的代码就可以解决问题。如果不是这样,让我们​​知道你想做什么......也就是说,你为什么要移动指针? – Ben

+0

$ subject_qry从数据库中检索10个类别,我想将它们左右浮动。 (class =“left”) – Mosaic

1

有几件事情,不要让你的例子感。首先,您不能在检索结果时使用带有mysql_fetch_array的名称。 Mysql_fetch_array使用数字索引,而不是列名。其次,您不会从循环while语句中返回值。你要么建立一个字符串,要么在你循环的时候回显它。

你有没有尝试过这样的事情:

$counter = 1; 
while ($subject = mysql_fetch_array($subject_qry)) { 
    echo "<div class=\"left\" id=\"{$subject[0]}\"></div>"; 
    mysql_data_seek($subject_qry,$counter); 
    $subject = mysql_fetch_array($subject_qry); 
    echo "<div class=\"right\" id=\"{$subject[0]}\"></div>"; 
    $counter=$counter+2; 
}