0

我的项目有用户帐户,其中包含属于已上传它们的每个用户的照片

我想为每个用户显示下一张和上一张照片,所以当我转到照片的朋友列表时,我可以导航(显然)到用户下一张上传的照片。我可以将这些作为 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
4

1 回答 1

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)来整齐地组织和浏览照片。

于 2012-07-12T05:41:14.330 回答