Php 更新数据库字段错误代码点火器
我在CodeIgniter 2.1中收到以下错误消息:Php 更新数据库字段错误代码点火器,php,mysql,codeigniter,codeigniter-2,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 我正在尝试更新数据库中的字段。我有这个代码,每个教程都是一样的批量上传。不管怎样,它都能工作,但问题是它显示了这样一个错误 这就是我的模型中的内容: functi
A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
Filename: database/DB_active_rec.php
Line Number: 1407
我正在尝试更新数据库中的字段。我有这个代码,每个教程都是一样的批量上传。不管怎样,它都能工作,但问题是它显示了这样一个错误
这就是我的模型中的内容:
function update2($data){
$this->db->update_batch('users',$data, "id");
}
这是我在控制器中拥有的:
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";
}
试试这个,希望它能起作用
function update2($data){
foreach($data as $string_val){
$this->db->update_batch('users',$string_val, "id");
}
}
或
只是在这里偶然发现了完全相同的问题。幸运的是,我使用的是相同的CI版本。:) M_A__K的回答确实有助于消除“通知”,但我认为这不是解决问题的正确方法。所以我决定看一下DB_active_rec.php中的第1407行,我相信这只是CI 2.1.2中的一个小错误 这是我的解决办法。我只是简单地更改了原始代码:
$not[] = $k.'-'.$v;
为此:
$not[] = $k2.'-'.$v2;
瞧!“通知”不再出现。:)
我们可以清楚地看到,第1407行并不打算使用$k和$v,因为第1407行位于一个foreach循环中,该循环将$v作为$k2和$v2进行迭代
我希望我说的很清楚。刚刚意识到,像m_a__K建议的那样使用foreach实际上超出了使用update_batch函数的目的。这是因为通过使用foreach,我们实际上是对每个数组元素进行单个更新(而不是批处理)。这与在CodeIgniter中使用(单个)更新功能没有什么不同。我总是觉得这样做有点脏,但你也可以总是抑制这一行代码的错误
function update2($data){
@$this->db->update_batch('users',$data, "id");
}
当然,正确的做法是升级到2.1.3(还没有测试或看起来还不错,所以我假设它是固定的。)正确的解决方案是从中删除第1401-1404行,因为
$not
变量没有在任何地方使用。您正在运行哪个版本的CodeIgniter?您可以通过哑巴问题看到这一点,但是如果您在update2()中的update\u批处理调用的正上方执行($data)的print\r或var\u导出,您是否得到了传入的相同数组?为update编写的指令是错误的,您应该使用where条件查看文档好的,不用担心。刚刚在测试中再次出现错误(不确定为什么我昨天没有看到)。显然在2.1.3中没有修复。我将使用错误抑制-/这仅在2013年7月8日发布的CI 2.1.4中针对仍在使用2.1.3并遇到此问题的用户进行了修复。为什么不删除这些行$not不适用于任何地方。检查下面我的答案。
function update2($data){
@$this->db->update_batch('users',$data, "id");
}