查询正在破碎。如何跳过PHP行

时间:2010-06-15 13:39:03

标签: php cycle rows break skip

我有一个问题可能很蹩脚,但它让我卡住了 我有一个db查询

 $query_Recordset10 = "SELECT * FROM products 
  WHERE razdel='mix' AND ID='$ID+1' AND litraj='$litri' ORDER BY ID ASC";
$Recordset10 = mysql_query($query_Recordset10, $victor) or die(mysql_error());
$row_Recordset10 = mysql_fetch_array($Recordset10);
$totalRows_Recordset10 = mysql_num_rows($Recordset10);

这是基于页面上当前产品ID的行中下一个产品的查询。

但是,如果符合查询条件的下一个产品是2个或更多ID,那么我的周期就会中断。那么有没有办法跳过这些行并获得符合条件的下一个ID。

非常感谢。

5 个答案:

答案 0 :(得分:1)

SELECT * FROM products
WHERE razdel='mix' AND ID> $ ID AND litraj='$litri' ORDER BY ID ASC";

答案 1 :(得分:1)

问题已解决。我还有很多东西需要学习。

SELECT * FROM products WHERE razdel='mix' AND ID>'$ID' AND litraj='$litri' ORDER BY ID ASC LIMIT 1

这是怀特线,但我的错误是如何生成$ ID。

谢谢大家。

答案 2 :(得分:0)

使用foreach循环遍历数组而不是尝试通过索引访问(如果你要获取每个值):

foreach ($records as $record) {
}

而不是

for ($i = 0; $i < count($records); $i++) {
}

$i = 0;
while ($i < count($records)) {

    $i++;
}

$i = 0;
do {

} while (++$i < count($records));

答案 3 :(得分:0)

请改用此查询:

SELECT * FROM products WHERE razdel='mix' AND ID>$ID AND litraj='$litri' ORDER BY ID ASC LIMIT 1

这将为您提供ID为$ ID的下一个元素。

答案 4 :(得分:0)

将您的查询更改为:

$query_Recordset10 = "SELECT * FROM products 
    WHERE razdel='mix' AND ID > '$ID' AND litraj='$litri' ORDER BY ID ASC LIMIT 1";

因此,您仍然只返回1行(如果有任何要返回的内容),但您将返回下一行(根据ORDER BY ID ASC)与(可能)具有增量ID的行。