запрос ломается. Как пропустить строки PHP - PullRequest
0 голосов
/ 15 июня 2010

У меня есть вопрос, вероятно, отстой, но он застрял У меня есть запрос БД

 $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);

Это запрос следующего продукта в строке на основе идентификатора текущего продукта на странице.

Но если следующий продукт, соответствующий критериям в запросе, будет на 2 или более идентификатора вперед, мой цикл будет прерываться Так есть ли способ пропустить эти строки и получить следующий идентификатор, соответствующий критериям.

Большое спасибо.

Ответы [ 5 ]

1 голос
/ 15 июня 2010

ПРОБЛЕМА РЕШЕНА.Мне все еще нужно многому научиться.

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

это самая правильная строка, но моя ошибка заключалась в том, как генерируется $ ID.

Спасибо всем.

1 голос
/ 15 июня 2010

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

0 голосов
/ 15 июня 2010

Измените свой запрос следующим образом:

$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) против (потенциально) строки с инкрементным идентификатором.

0 голосов
/ 15 июня 2010

Используйте этот запрос вместо:

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

Это даст вам следующий элемент после элемента с идентификатором $ ID.

0 голосов
/ 15 июня 2010

Используйте 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));
...