Php 登录codeigniter后在表中添加数据
你好,我是codeigniter的新成员!。。。我做了两个表,一个是管理员可以登录的,登录后他想在其他表(建筑)中添加数据,另一个表的admin_id是外键。所以,当有许多管理员并且每个人都想添加数据时,我如何用每个数据存储管理员id,,,如果我在会话(控制器内部)中存储了用户id,那么我应该在模型内部写些什么,如下所示:Php 登录codeigniter后在表中添加数据,php,mysql,database,codeigniter,Php,Mysql,Database,Codeigniter,你好,我是codeigniter的新成员!。。。我做了两个表,一个是管理员可以登录的,登录后他想在其他表(建筑)中添加数据,另一个表的admin_id是外键。所以,当有许多管理员并且每个人都想添加数据时,我如何用每个数据存储管理员id,,,如果我在会话(控制器内部)中存储了用户id,那么我应该在模型内部写些什么,如下所示: if($this->form_validation->run()){ $result = $this->validate_admins();
if($this->form_validation->run()){
$result = $this->validate_admins();
if($result){
$admin_ID = $this->adminship_model->get_adminID($this->input->post('email'));
$data = array(
'email'=>$this->input->post('email'),
'password'=>md5($this->input->post('password')),
'is_logged_in' => '1',
'admin_id' => $admin_ID
);
$this->session->set_userdata($data);
这段代码在模型中,但不完整,问题就在这里
function form_insert(){
/* / $query = $this->db->query('select admin_id from admin where email = ""'); */
//echo $query;
$data = array(
'owner_name' => $this->input->post('owner_name'),
'owner_telephone' => $this->input->post('owner_telephone'),
'owner_mobile' => $this->input->post('owner_mobile'),
'owner_email' => $this->input->post('owner_email'),
'building_name' => $this->input->post('building_name'),
'building_street' => $this->input->post('building_street'),
'building_city' => $this->input->post('building_city'),
'full_address' => $this->input->post('full_address'),
'no_of_floors' => $this->input->post('no_of_floors'),
'no_of_apartments' => $this->input->post('no_of_apartments'),
'building_description' => $this->input->post('building_description')
// I wanna add photo.
);
$this->db->insert('building', $data);
//$email_fk = $this->db->mysqli_insert_id();
echo "dooooooooooooooooooooooooon!";
}
这是我的数据库表:
CREATE TABLE IF NOT EXISTS `building` (
`building_ID` int(20) NOT NULL AUTO_INCREMENT,
`owner_name` varchar(100) NOT NULL,
`owner_telephone` int(15) NOT NULL,
`owner_mobile` int(10) NOT NULL,
`owner_email` varchar(50) NOT NULL,
`building_name` varchar(100) NOT NULL,
`building_street` varchar(100) NOT NULL,
`no_of_apartments` int(100) NOT NULL,
`no_of_floors` int(100) NOT NULL,
`building_description` text NOT NULL,
`building_imgs` longblob,
`The_engineering_plan_img` longblob,
`admin_id` int(9) NOT NULL,
`building_city` varchar(100) NOT NULL,
`full_address` varchar(100) NOT NULL,
PRIMARY KEY (`building_ID`),
KEY `admin_id` (`admin_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf16 AUTO_INCREMENT=2 ;
这就是错误:
发生数据库错误
错误号码:1452
无法添加或更新子行:外键约束失败
(管理建筑物
建筑物
,限制建筑物(ibfk_1)
外国
键(admin\u id
)引用上的删除级联上的admin
(admin\u id
)
更新(级联)
非常感谢您的帮助:)当您插入到构建表中时,还需要设置管理员ID,因为他是外键且不为空,所以您必须以任何方式设置值。试试这个
$this->db->query("SET FOREIGN_KEY_CHECKS=0");
在insert查询上方,我将管理员id存储在侧会话中,然后从会话中获取它。然后,通过将其添加到模型中的数组中,将其存储在构建表中 正如错误所说,您需要删除admin_id中的外键,或者您可以在引用中创建主键,使其自动递增,并且不要在insert中将admin_id插入查询中。admin table admin_id是自动递增的主键,在构建表中是外键。。我的问题是如何将其存储在构建表中?与输入的数据,知道有超过管理员和每个人都有建筑物。填充数据后,他想查看他的建筑@Marmik Bhatt然后您必须从构建表中删除外键约束如何以及为什么要删除?请进一步解释?建议删除外键约束
$this->db->query("SET FOREIGN_KEY_CHECKS=0");