从另一个表中分配ID

时间:2014-08-11 13:57:59

标签: php codeigniter

在我的数据库中,我有3个表。

笑话:

CREATE TABLE IF NOT EXISTS `jokes` (
  `joke_id` int(11) NOT NULL AUTO_INCREMENT,
  `joke` varchar(1024) NOT NULL,
  `category_id` int(11) NOT NULL,
  `vote` int(255) NOT NULL,
  `date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

类别:

CREATE TABLE IF NOT EXISTS `category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(51) NOT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

最后,评论:

CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(40) NOT NULL,
  `comment` text NOT NULL,
  `joke_id` int(11) NOT NULL,
  `post_id` int(11) NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

insertComment函数分配值并发送给模型:

public function insertComment(){
    if($this->input->post('act') == 'add-com'){
    $name = $this->input->post('user-com');
    $comment = $this->input->post('user-com');


    $this->comments_m->insertComment($name, $comment);


    }
}

下面的模型函数从html中获取数据,并将其放置为数组。

//inserts the comments
function insertComment (){

    extract($_POST);
    if($_POST['act'] == 'add-com'){
        $data = array(
            'user' => htmlentities($user),
            'comment' => htmlentities($comment),
            'id_post' => $id_post = "1",
            //need to assign the joke_id to this string to fecth comments from specific joke
            'joke_id' => "1"

        );

        if(strlen($data['user']) <= '1'){
            $data['user'] = 'Guest';
        }

        $this->db->insert('comments', $data);
    }
}

我的问题是,我该怎么做才能将joke_id的赋值改变为实际的joke_id,以便为该标识唯一地存储该笑话的注释。目前它是&#34; 1&#34;出于测试目的,因为我无法完成任务。

2 个答案:

答案 0 :(得分:0)

在你的笑话视图中,你可以将joke_id存储为隐藏输入(post),或者在表单操作字段“MYURL / insertComment?joke_id = X”(get)中存储URI 或者存储在会话变量

现在你可以在控制器中将id传递给comments_m-&gt; insertComment($ joke_id,$ name,$ comment);

答案 1 :(得分:-2)

大多数SQL数据库在插入新行时会自动增加ID,因此不需要自己进行。但是如果需要,只需检索表中的最后一条记录并将ID设置为+1。