【发布时间】:2020-09-17 21:10:34
【问题描述】:
我的目标是结合使用 CodeIgniter 的 insert_batch() 和 update_batch() 将传入数据添加到我的 macro_plan 表中。
在下面的脚本中,我尝试根据 sr_no 值查询数据库中的现有行,然后适当地调用批处理查询方法。
function insert_batch($dataSet)
{
$query = $this->db->query("select sr_no from macro_plan");
$data = $query->result_array();
$sr_nos=array();
foreach($data as $key => $value):
$sr_nos[$key]=$value['sr_no'];
endforeach;
$query1= $this->db->query("select * from macro_plan WHERE sr_no IN ('".$sr_nos."')");
$update_query = $query1->result();
if ($update_query->num_rows() > 0) {
$this->db->update_batch($dataSet,$this->macro_plan);//update if ids exist
} else {
$this->db->insert_batch($dataSet,$this->macro_plan);//insert if does not exist
}
}
但是,我收到“数组到字符串转换”错误。
$dataset 将类似于:
Array (
[0] => Array (
[quantity_update] => 88
[sr_no] => 2020-11-1
[batch] => Batch 2
[quantity_date_update] => 05-May-20
[inq_id] => 49
)
[1] => Array (
[quantity_update] => 99
[sr_no] => 2020-11-2
[batch] => Batch 1
[quantity_date_update] => 11-May-20
[inq_id] => 49
)
)
我的表结构如下:
【问题讨论】:
-
第 52 行是哪一行?
-
$query1= $this->db->query("select * from macro_plan WHERE sr_no IN ('".$sr_nos."')");
-
如何识别表中的唯一性?
sr_no本身就足够了吗,还是需要使用复合键(sr_noANDbatch)?您预计$dataSet中有多少行数据? -
是的,sr_no 足以找到唯一性。行数可能不同,大约在 40 到 50 之间。
-
有时小于 10 - 最大约为 40 -50。
标签: php sql codeigniter activerecord batch-processing