Получить предыдущую и следующую строку из текущего идентификатора - PullRequest
1 голос
/ 27 февраля 2009

Как я могу получить следующую строку в таблице?

`image_id` int(11) NOT NULL auto_increment
`image_title` varchar(255) NOT NULL
`image_text` mediumtext NOT NULL
`image_date` datetime NOT NULL
`image_filename` varchar(255) NOT NULL

Если текущее изображение, например, 3, а следующее - 7 и т. Д., Это не сработает:

$query = mysql_query("SELECT * FROM images WHERE image_id = ".intval($_GET['id']));
echo $_GET['id']+1;

Как мне быть?

спасибо

Ответы [ 4 ]

11 голосов
/ 27 февраля 2009
SELECT * FROM images WHERE image_id < 3 ORDER BY image_id DESC LIMIT 1 -- Previous
SELECT * FROM images WHERE image_id > 3 ORDER BY image_id LIMIT 1 -- Next
7 голосов
/ 27 февраля 2009

Если вы хотите обвести записи, вы можете использовать это:

-- previous or last, if there is no previous
SELECT *
FROM images
WHERE image_id < 12345 OR image_id = MAX(image_id)
ORDER BY image_id DESC
LIMIT 1

-- next or first, if there is no next
SELECT *
FROM images
WHERE image_id > 12345 OR image_id = MIN(image_id)
ORDER BY image_id ASC
LIMIT 1

То же самое с UNION, может быть даже более эффективным:

-- previous or last, if there is no previous
(SELECT * FROM images WHERE image_id < 12345 ORDER BY image_id DESC LIMIT 1)
UNION (SELECT * FROM images WHERE image_id = (SELECT MAX(image_id) FROM images))
LIMIT 1

-- next or first, if there is no next
(SELECT * FROM images WHERE image_id > 12345 ORDER BY image_id ASC LIMIT 1)
UNION (SELECT * FROM images WHERE image_id = (SELECT MIN(image_id) FROM images))
LIMIT 1
2 голосов
/ 27 февраля 2009

Ты очень близко. Попробуйте это:

$query = mysql_query("SELECT * FROM images
                     WHERE image_id > ".intval($_GET['id'])." ORDER BY image_id LIMIT 1");

    <?php echo $_GET['id'] ?>
0 голосов
/ 15 октября 2009

Пожалуйста, ради любви к Интернету, не создавайте SQL-запрос самостоятельно. Используйте PDO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...