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