MySQL查找下一个id(下一张图片)

时间:2012-02-20 22:39:22

标签: php mysql codeigniter

我为用户创建了一个上传图片的网站。但是,我想创建一个下一个图像按钮(或上一个图像按钮)。问题是,如何获得“下一个”和“上一个”ID?

SQL结构如下所示,

CREATE TABLE IF NOT EXISTS `images` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `user_id` int(9) NOT NULL,
  `url` varchar(450) NOT NULL,
  `upload_time` int(9) NOT NULL,
  `upload_ip` varchar(250) NOT NULL,
  `warnings` int(9) NOT NULL,
  `deleted` int(9) NOT NULL,
  PRIMARY KEY (`id`)
)

如您所见,我不能只添加“+1”,因为其他用户可能会获得下一个ID等。这有什么好的简单解决方案吗?也许是一个例子?

我正在使用codeigniter,这就是我提取数据和查看单个图像的方式

PHP

// Get current image by id
function get_single_image($user_id, $image_id)
{

    $this->db->where('id', $image_id);
    $this->db->where('user_id', $user_id);
    $this->db->where('deleted', '0');

    $query = $this->db->get('images');

    if($query->num_rows() > 0)
    {

        $query = $query->result_array();
        return $query[0];

    }

    return false;

}

3 个答案:

答案 0 :(得分:2)

用户图像的下一个:获取id大于current_id的所有图像,对ASC进行排序并取第一个(具有仍然大于current_id的最低id)

"SELECT * FROM images WHERE user_id=? AND id>? ORDER BY id ASC LIMIT 1", 
$user_id, $current_id

与之前相同:获取id小于current_id的所有图像,排序DESC并取第一个:

"SELECT * FROM images WHERE user_id=? AND id<? ORDER BY id DESC LIMIT 1", 
$user_id, $current_id

答案 1 :(得分:1)

由于好奇心,我自己决定使用Google CodeIgniter - 所以这里的评论是用语法编写的:)

选择下一张图片

$this->db->where('id >',$image_id);
$this->db->order_by('id','asc');
$this->db->limit(1);

选择上一张图片

$this->db->where('id <',$image_id);
$this->db->order_by('id','desc');
$this->db->limit(1);

答案 2 :(得分:0)

$query = "SELECT * FROM `images` 
         WHERE `user_id` = ".$user_id;

$result = mysql_query( $query );

while( $row = mysql_fetch_array( $result ) ) {

   echo $row['id'];

}

这将返回所有用户pic id's