Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用codeigniter在数据库中插入多行_Php_Html_Css_Codeigniter_Controller - Fatal编程技术网

Php 使用codeigniter在数据库中插入多行

Php 使用codeigniter在数据库中插入多行,php,html,css,codeigniter,controller,Php,Html,Css,Codeigniter,Controller,我想使用codeigniter在数据库中插入多行,但我不知道如何正确地实现它以使程序正常工作。我想要的是从accounts表中获取数据,并在if-else语句中使用它的一个属性作为验证参数。如果满足条件,它将使用公告表内容以及满足适当条件的所有帐户的用户id填充该表。你能帮我弄清楚这件事吗?多谢各位 下面是我的代码片段 控制器 创建公告视图 #图像预览{ 显示:无; 宽度:250px; 高度:300px; } #cke_descr{ 左边距:自动; 右边距:自动; } 创建公告 假设传递到i

我想使用codeigniter在数据库中插入多行,但我不知道如何正确地实现它以使程序正常工作。我想要的是从accounts表中获取数据,并在if-else语句中使用它的一个属性作为验证参数。如果满足条件,它将使用公告表内容以及满足适当条件的所有帐户的用户id填充该表。你能帮我弄清楚这件事吗?多谢各位

下面是我的代码片段

控制器 创建公告视图

#图像预览{
显示:无;
宽度:250px;
高度:300px;
}
#cke_descr{
左边距:自动;
右边距:自动;
}
创建公告


假设传递到
insertItems
的数据已全部清除,并且您希望将其直接插入数据库而不做任何更改

数据库功能:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Bid_Model extends CI_Model {

    function fetchItems($table, $data = NULL){
        if ($data != NULL){
            $this->db->where($data);
        }

        $query = $this->db->get($table);
        return ($query->num_rows() > 0) ? $query->result() : FALSE;
    }

    function deleteItem($table,$array=NULL){
        if($array!=NULL){
            $this->db->where($array);
             $this->db->delete($table);
        }else{
            $this->db->empty_table($table); 
        } 
    }

    function insertItem($table, $data = NULL){
        $this->db->insert($table, $data);
    }

    function insertItems($table,$data = array()){
        $this->db->insert_batch($table, $data);
    }


    function updateItem($table, $data, $var = NULL){
        if($var != NULL){
            $this->db->where($var);
        }
        $this->db->update($table, $data);
    }


}
函数插入\u批($data){
$query='插入表(`title`、`user\u type`、`content`、`image`、,
`admin_user_id`、`user_id`)值;
$insert_data=[];

对于($x=0;$x),假设传递到
insertItems
的数据已全部清除,并且您希望将其直接插入数据库而不做任何更改

数据库功能:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Bid_Model extends CI_Model {

    function fetchItems($table, $data = NULL){
        if ($data != NULL){
            $this->db->where($data);
        }

        $query = $this->db->get($table);
        return ($query->num_rows() > 0) ? $query->result() : FALSE;
    }

    function deleteItem($table,$array=NULL){
        if($array!=NULL){
            $this->db->where($array);
             $this->db->delete($table);
        }else{
            $this->db->empty_table($table); 
        } 
    }

    function insertItem($table, $data = NULL){
        $this->db->insert($table, $data);
    }

    function insertItems($table,$data = array()){
        $this->db->insert_batch($table, $data);
    }


    function updateItem($table, $data, $var = NULL){
        if($var != NULL){
            $this->db->where($var);
        }
        $this->db->update($table, $data);
    }


}
函数插入\u批($data){
$query='插入表(`title`、`user\u type`、`content`、`image`、,
`admin_user_id`、`user_id`)值;
$insert_data=[];

对于($x=0;$x),由于您说过要插入多行,我假设您要使用先前从
fetchItems()
函数中选择的数据进行批插入。您可以这样尝试:

function insert_batch($data) {
   $query = 'INSERT INTO TABLE (`title`, `user_type`, `content`, `image`, 
                                `admin_user_id`, `user_id`) VALUES ';
   $insert_data = [];
   for($x=0; $x<count($data); $x++){
    $insert_data[] = "('" . $data['title'] . "', '" . $data['user_type'] . "', '" . $data['content'] . "', '" . $data['image'] . "', '" . $data['admin_user_id'] . "','" . $column2['user_id'] . "')";
    }
    $query .= implode(',', $insert_data); //Execute this $query
}

既然您说过要插入多行,我假设您要使用先前从
fetchItems()
函数中选择的数据进行批插入。您可以这样尝试:

function insert_batch($data) {
   $query = 'INSERT INTO TABLE (`title`, `user_type`, `content`, `image`, 
                                `admin_user_id`, `user_id`) VALUES ';
   $insert_data = [];
   for($x=0; $x<count($data); $x++){
    $insert_data[] = "('" . $data['title'] . "', '" . $data['user_type'] . "', '" . $data['content'] . "', '" . $data['image'] . "', '" . $data['admin_user_id'] . "','" . $column2['user_id'] . "')";
    }
    $query .= implode(',', $insert_data); //Execute this $query
}

参见此链接[将文本字段的名称更改为数组,然后仅保存在数据库中的多行]参见此链接[将文本字段的名称更改为数组,然后仅保存在数据库中的多行
function insert_batch($data) {
   $query = 'INSERT INTO TABLE (`title`, `user_type`, `content`, `image`, 
                                `admin_user_id`, `user_id`) VALUES ';
   $insert_data = [];
   for($x=0; $x<count($data); $x++){
    $insert_data[] = "('" . $data['title'] . "', '" . $data['user_type'] . "', '" . $data['content'] . "', '" . $data['image'] . "', '" . $data['admin_user_id'] . "','" . $column2['user_id'] . "')";
    }
    $query .= implode(',', $insert_data); //Execute this $query
}
        $newData = $this->Bid_Model->fetchItems('accounts');

        if($users == $uType){

            $announce_image = $this->upload->data('file_name');
            $data = []; // new empty array
            foreach($newData as $user):
                $userIDs = $user->user_id;

                $data[] = array(
                    'title' => $title,
                    'user_type' => $users,
                    'content' => $content,
                    'image' => $announce_image,
                    'admin_user_id' => $id,
                    'user_id' => $userIDs
                ); 
            endforeach;

            $this->Bid_Model->insertItems('announcements', $data);
        }