Php 登录codeigniter后在表中添加数据

Php 登录codeigniter后在表中添加数据,php,mysql,database,codeigniter,Php,Mysql,Database,Codeigniter,你好,我是codeigniter的新成员!。。。我做了两个表,一个是管理员可以登录的,登录后他想在其他表(建筑)中添加数据,另一个表的admin_id是外键。所以,当有许多管理员并且每个人都想添加数据时,我如何用每个数据存储管理员id,,,如果我在会话(控制器内部)中存储了用户id,那么我应该在模型内部写些什么,如下所示: if($this->form_validation->run()){ $result = $this->validate_admins();

你好,我是codeigniter的新成员!。。。我做了两个表,一个是管理员可以登录的,登录后他想在其他表(建筑)中添加数据,另一个表的admin_id是外键。所以,当有许多管理员并且每个人都想添加数据时,我如何用每个数据存储管理员id,,,如果我在会话(控制器内部)中存储了用户id,那么我应该在模型内部写些什么,如下所示:

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");