Cha*_*mie 13 php mysql codeigniter codeigniter-2
我在CodeIgniter 2.1中收到以下错误消息:
A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
Filename: database/DB_active_rec.php
Line Number: 1407
Run Code Online (Sandbox Code Playgroud)
我正在尝试更新数据库中的字段.我有这个代码,每个教程对于批量上传都是一样的.无论如何它仍然有效但事情是它显示这样的错误.
这就是我在我的模型中所拥有的:
function update2($data){
$this->db->update_batch('users',$data, "id");
}
Run Code Online (Sandbox Code Playgroud)
这就是我在我的控制器中所拥有的:
public function updateValues(){
$this->load->model('get_db');
$newRow = array(
array(
'id' => '3',
'firstname' => 'Rapphie'
),
array(
'id' => '2',
'firstname' => 'Charmie'
)
);
$this->get_db->update2($newRow);
echo "it has been updated";
}
Run Code Online (Sandbox Code Playgroud)
Ami*_*din 47
在这里偶然发现了同样的问题.幸运的是,我使用的是相同的CI版本.:)
确实,M_A_K的答案有助于删除"通知",但我不认为这是解决问题的正确方法.所以我决定看看行1407在DB_active_rec.php,我相信,这不过是一个小错误在CI 2.1.2.
这是我的修复.我只是更改了原始代码:
$not[] = $k.'-'.$v;
Run Code Online (Sandbox Code Playgroud)
进入这个:
$not[] = $k2.'-'.$v2;
Run Code Online (Sandbox Code Playgroud)
瞧!"通知"不再出现.:)
我们可以清楚地看到1407行并不意味着使用$ k和$ v,因为1407行是在foreach循环内部迭代$ v作为$ k2和$ v2.
我希望我能说清楚自己.
M_A*_*A_K -2
试试这个希望它有效
function update2($data){
foreach($data as $string_val){
$this->db->update_batch('users',$string_val, "id");
}
}
Run Code Online (Sandbox Code Playgroud)
或者
function update2($data){
foreach($data as $string_val){
$this->db->update_batch('users',$string_val->first_name, "id");
}
}
Run Code Online (Sandbox Code Playgroud)