我的项目有用户帐户,其中包含属于已上传的每个用户的照片
我想为每个用户显示下一张和上一张照片,所以当我转到朋友的照片列表时,我可以浏览(显然)用户下次上传的照片。我会很好,这些是photo_id顺序中的下一张/上一张照片。
您如何为下一张/上一张照片撰写此类查询?
我的表结构是这样的。
CREATE TABLE IF NOT EXISTS `userphotos` (
`photo_id` int(11) NOT NULL auto_increment,
`photo_ownerid` int(11) NOT NULL,
`photo_ispublic` int(11) NOT NULL,
`photo_name` varchar(100) NOT NULL,
`photo_caption` varchar(100) NOT NULL,
`photo_imagedata` longblob NOT NULL,
`album_id` int(11) NOT NULL,
PRIMARY KEY (`photo_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=89 ;
我会用这样的东西来选择id的
以前的图片
SELECT field1 FROM tablename WHERE id < $currentid ORDER BY id DESC LIMIT 1
下一张图片
SELECT field1 FROM tablename WHERE ID > $currentid ORDER BY id ASC LIMIT 1
答案 0 :(得分:4)
这些查询应该适用于您想要完成的任务。虽然您还应添加所有者ID,以限制将要浏览到用户拥有的照片。
上一张图片
SELECT field1 FROM tablename
WHERE id < $currentId AND photo_ownerid = $ownerId
ORDER BY id DESC LIMIT 1
下一张图片
SELECT field1 FROM tablename
WHERE ID > $currentId AND photo_ownerid = $ownerId
ORDER BY id ASC LIMIT 1
然而,正如对该问题的评论中暗示的那样,每次您希望查看下一张/上一张照片时,都有更有效的替代方法来查询数据库。例如,您可以一次查询所有照片,然后使用javascript库PrettyPhoto来整齐地整理和浏览照片。