在我的数据库中,我有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;出于测试目的,因为我无法完成任务。
答案 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。