Php 更新Codeigniter中的多行
我可以在数据库中插入多行,但问题是当我尝试更新时,它会给我一条Codeigniter错误消息。这是我的模型,实际上我在控制器中找不到任何重要的错误,因为我只是在控制器中加载该模型Php 更新Codeigniter中的多行,php,sql,codeigniter,sql-update,Php,Sql,Codeigniter,Sql Update,我可以在数据库中插入多行,但问题是当我尝试更新时,它会给我一条Codeigniter错误消息。这是我的模型,实际上我在控制器中找不到任何重要的错误,因为我只是在控制器中加载该模型 $data = array(); //$todayDate = date('Y-m-d'); for($i = 1; $i < count($_POST['code']); $i++) { //$code=$_POST['code'][$i]; if($_POST['code'][$i] !=
$data = array();
//$todayDate = date('Y-m-d');
for($i = 1; $i < count($_POST['code']); $i++) {
//$code=$_POST['code'][$i];
if($_POST['code'][$i] != '') {
$data[] = array(
$code='code' => $_POST['code'][$i],
'price' => $_POST['sell']
);
}
}
$linksCount = count($data);
if($linksCount) {
$this->db->where('code',$code);
$this->db->insert_batch('sell_rate', $data);
}
return $linksCount;
$data=array();
//$todayDate=日期('Y-m-d');
对于($i=1;$i$\u POST['code'][$i],
'price'=>$\u POST['sell']
);
}
}
$LinkScont=计数($data);
如果($LinkScont){
$this->db->where('code',$code);
$this->db->insert_batch('sell_rate',$data);
}
返回$LinkScont;
在您的车型中
以下部分应
$data[] = array(
$code='code' => $_POST['code'][$i],
'price' => $_POST['sell']
);
替换为
$data[] = array(
'code' => $_POST['code'][$i],
'price' => $_POST['sell']
);
要更新值,应使用update\u batch
而不是insert\u batch
$this->db->update_batch('yourtableName', $data, 'code'); // 'code' is where key
将yourtableName
替换为原始表名,并且code
用于where
键,因此不需要使用$this->db->where('code',$code)
参考:它在字段列表中给出了一个错误未知的列数组。它试图插入“数组”而不是数组中的数据。感谢vaia,您的代码可以工作,但会有一点变化。它将是'price'=>$POST['sell'][$i]我有一个问题,如果我没有为代码发布任何sell字段,它会将代码价格设置为0。但是我想保持它以前的值。这意味着如果我没有为代码输入任何值,它将保持它以前的值。请帮助我解决这个问题。我想你可以检查这两个值,比如
if($\u POST['code'][$i]!='&&$POST['sell'][$i]!='
我不需要检查代码字段是否已填充。我想检查我是否为sell设置了任何值,然后它将运行查询。因此我尝试使用“if($POST['sell'][$i]!=”{$this->db->where('code',$code);$this->db->update('sell_rate',$price);}否则返回false;'但它像以前一样给我一个0值