更新数据库字段错误 CodeIgniter
Posted
技术标签:
【中文标题】更新数据库字段错误 CodeIgniter【英文标题】:Update Database Field Error CodeIgniter 【发布时间】:2012-07-02 00:24:04 【问题描述】:我在 CodeIgniter 2.1 中收到以下错误消息:
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";
【问题讨论】:
您运行的是哪个版本的 CodeIgniter?您可以通过 愚蠢的问题,但是如果您在 update2() 中的 update_batch 调用上方执行 print_r 或 var_export ($data),您得到的数组是否与传入的数组相同? 你写的更新指令是错误的,你应该使用 where 条件参见文档codeigniter.com/user_guide/database/active_record.html#update 【参考方案1】:正确的解决方案是从DB_active_rec.php 中删除第1401 - 1404 行,因为$not
变量在任何地方都没有使用。
【讨论】:
【参考方案2】:我总是觉得这样做有点肮脏,但你也可以随时抑制那一行代码的错误!
function update2($data)
@$this->db->update_batch('users',$data, "id");
当然,正确的做法是升级到 2.1.3(尚未测试或查看,所以我认为它已修复。)
【讨论】:
好吧,没关系。刚刚再次测试错误(不知道为什么我昨天没有看到它。)显然没有在 2.1.3 中修复。我将使用错误抑制。 ;-/【参考方案3】:刚刚意识到使用像 M_A_K 这样的 foreach 建议实际上超出了使用 update_batch 函数的目的。这是因为通过使用 foreach,我们实际上是对每个数组元素进行单次更新(而不是批处理)。这与在 CodeIgniter 中使用(单个)更新函数没有什么不同。
【讨论】:
【参考方案4】:在这里偶然发现了完全相同的问题。幸运的是,我使用的是相同的 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 迭代。
我希望我说清楚了。
【讨论】:
这仅在 2013 年 7 月 8 日发布的 CI 2.1.4 中修复,适用于仍在使用 2.1.3 并遇到此问题的任何人。 为什么不直接删除这些行呢? $not 不在任何地方使用。在下面检查我的答案。【参考方案5】:试试这个希望它的工作
function update2($data)
foreach($data as $string_val)
$this->db->update_batch('users',$string_val, "id");
或
function update2($data)
foreach($data as $string_val)
$this->db->update_batch('users',$string_val->first_name, "id");
【讨论】:
以上是关于更新数据库字段错误 CodeIgniter的主要内容,如果未能解决你的问题,请参考以下文章
更新数据库中的一个 JSON 字段 - CodeIgniter