0

私はおそらく足りない質問がありますが、それは私を立ち往生させました私はデータベースクエリを持っています

 $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を取得する方法はありますか。

どうもありがとうございます。

4

5 に答える 5

1

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

于 2010-06-15T14:06:13.257 に答える
1

問題が解決しました。まだまだ学ぶことがたくさんあります。

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

これは正しい行ですが、私の間違いは $ID の生成方法でした。

皆さん、ありがとうございました。

于 2010-06-15T15:07:51.827 に答える
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 を持つ行が返されます。

于 2010-06-15T14:07:51.660 に答える
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));
于 2010-06-15T13:46:02.290 に答える
0

代わりに次のクエリを使用してください。

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

これにより、ID が $ID の要素の次の要素が得られます。

于 2010-06-15T14:06:53.717 に答える