gpt4 book ai didi

php - 我可以将数组添加到 codeigniter 中的 update_batch 的 where 子句吗

转载 作者:可可西里 更新时间:2023-11-01 13:01:42 24 4
gpt4 key购买 nike

我正在使用 codeigniter update_batch 函数。

我想将数组作为第三个参数(where 子句)传递给 update_batch

$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name 2' ,
'date' => 'My date 2'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name 2' ,
'date' => 'Another date 2'
)
);

取而代之的是:

$this->db->update_batch('mytable', $data, 'title'); 

我想这样做:

 $this->db->update_batch('mytable', $data, array('title','name')); 

添加了多个 where 条件。

这可能吗?

最佳答案

例如,您可以通过在模型 Test_model 中创建批量更新方法来执行此操作,因为 Codeigniter 不支持 native update_batch 中的多个 where 条件,因此示例如下:

public function update_batch_custom($table_name, $data, $indexes) {
if (empty($data) || empty($indexes)){
return 'Data or indexes must not be empty';
}

$db = $this->load->database('test_db', TRUE);
$sql = 'UPDATE ' . $table_name . ' SET ' . "\n";

//columns on which is done actual update
$columns = [];
foreach ($data[0] as $key => $value) {
if (!in_array($key, $indexes)){
$columns[] = $key;
}
}

/*
* forming WHEN .. THEN sql parts and WHERE condition
*/
$parts = [];
$where = [];
foreach ($data as $row) {
foreach ($columns as $column) {
$sql_part = ' WHEN (';
foreach ($indexes as $index) {
$sql_part .= $index . '= \''.$row[$index] . '\' AND ';
$where[$index][] = $row[$index];
}

$sql_part = substr($sql_part, 0, -4);
$sql_part .= ') THEN \'' . $row[$column] . '\'';
$parts[$column][] = $sql_part;
}
}

/*
* connecting WHEN .. THEN parts for each column to be updated
*/
foreach ($columns as $column) {
$sql .= $column .'= CASE ';
foreach ($parts[$column] as $sql_part) {
$sql .= $sql_part;
}
$sql .= ' ELSE ' . $column . ' END,';
}

/*
* adding WHERE part
*/
$sql = substr($sql, 0, -1);
$sql .= ' WHERE ';
foreach ($indexes as $index) {
if ( count($where[$index]) > 0){
$unique_where = array_unique($where[$index]);
$sql .= $index . ' IN (\'' . join('\',\'', $unique_where) . '\') AND ';
}
}

$sql = substr($sql, 0, -4);
$sql .= ';';

return $db->query($sql);
}

关于php - 我可以将数组添加到 codeigniter 中的 update_batch 的 where 子句吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569857/

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