gpt4 book ai didi

php - 更新一行,但如果行在 codeigniter 中不存在则插入

转载 作者:行者123 更新时间:2023-11-29 04:43:17 25 4
gpt4 key购买 nike

我想在表格中插入行,如下所示:

$this->db->update_batch($this->table_name, $update, 'image_id');

if ($this->db->affected_rows() === 0) {
$this->db->insert_batch($this->table_name, $update);
}

但如果它存在,我什么也不想做。但是上面的代码插入了另一行,因为没有行受到影响

我想我可以做一个INSERT IGNORE INTO,但我更喜欢使用 CodeIgniters upate_batchinsert_batch

$update - 变量类似于

$update = array(
array('id' => 1, 'name' => 'Gustav'),
array('id' => 2, 'name' => 'Peter'),
array('id' => 3, 'name' => 'Lisa')
)

更新

根据我得到的答案,我对自己想要的东西不够清楚。 (而且我认为我不够清楚我想要什么,所以这是我更新的问题,我希望它更清楚)

//This will insert Gustav, Peter and Lisa

$update = array(
array('image_id' => 1, 'name' => 'Gustav'),
array('image_id' => 2, 'name' => 'Peter'),
array('image_id' => 3, 'name' => 'Lisa')
)
$this->db->insert_batch($update);


//If I do this it would insert Party Gustav, Peter and Lisa.
$update = array(
array('image_id' => 1, 'name' => 'Party Gustav'),
array('image_id' => 2, 'name' => 'Peter'),
array('image_id' => 3, 'name' => 'Lisa')
)
$this->db->insert_batch($update);

//Above will create 6 rows

但我想要发生的是

$update = array(
array('image_id' => 1, 'name' => 'Gustav'),
array('image_id' => 2, 'name' => 'Peter'),
array('image_id' => 3, 'name' => 'Lisa')
)
$this->db->insert_batch($update);

$update = array(
array('image_id' => 1, 'name' => 'Party Gustav'),
array('image_id' => 2, 'name' => 'Peter'),
array('image_id' => 3, 'name' => 'Lisa')
)


//Insert batch but when existing image_ids just change the name
//from Gustav to Party Gustav (in this case)
$this->db->insert_batch($update);

//Above will create 3 rows

我猜它会等于 on key duplicate for insert_batch

最佳答案

首先从表中选择所有 image_id。

$data = $this->db->select(`image_id`)->get($this->table_name)->result_array();

将 image_id 列到数组中。

$image_ids=array();

foreach($data as $key => $value):

$image_ids[$key]=$value[`image_id`];

endforeach;

$update = array(
array('image_id' => 1, 'name' => 'Party Gustav'),
array('image_id' => 2, 'name' => 'Peter'),
array('image_id' => 3, 'name' => 'Lisa')
)

检查 image_ids 是否存在:

$update_query= $this->db->where_in(`image_ids`,$image_ids)
->get($this->table_name)->result();

if($update_query->num_rows() > 0):

$this->db->update_batch($update,$this->table_name);//update if ids exist
else
$this->db->insert_batch($update,$this->table_name);//insert if does not exist
endif;

关于php - 更新一行,但如果行在 codeigniter 中不存在则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24049652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com