【问题标题】:Unable to update database query in Codeigniter无法在 Codeigniter 中更新数据库查询
【发布时间】:2019-03-11 21:17:16
【问题描述】:

我必须从数组的形式中获取记录。以下是数组结果。

Array(
    [price] => Array
    (
        [0] => 210
    )

    [code] => Array
    (
        [0] => SER-1001
    )
)
Array
(
    [price] => Array
    (
        [1] => 80
    )

    [code] => Array
    (
        [1] => XYZ-121
    )
)

现在我很困惑,如何更新代码所在的产品表中的记录,例如SER-1001在数据库中,那么价格应该更新210

与其他匹配代码记录的方式相同。

【问题讨论】:

  • 一次更新多个产品?
  • 是的...我得到了更新的价格值以及产品代码。
  • 使用foreach循环在表单中显示值然后更新
  • 如果您可以生成或重新排列数组为 0,1,2... 外部索引和价格,代码为内部索引,那将是个好主意
  • 2 种方式,循环数组(在性能方面代价高昂),或简化您从表单获得的数组。

标签: php mysql codeigniter


【解决方案1】:
foreach ($arr as $key => $value) {
  $data = array(  
    'price'=> $value['price'];
  );  
  $this->db->where('code', $value['code']);  
  $this->db->update(‘database-table-name’,$data);   
}

试试这个,这里你正在循环遍历数组并一一更新数据。

【讨论】:

  • 消息:未定义索引:代码价格相同...我认为它应该是循环
【解决方案2】:
    $array = [
     [
        'price' => [ '0' => 210],
        'code' =>['0' => 'SER-1001']
    ],
    [
        'price' => ['1' => 80],
        'code' =>['1' => 'XYZ-121']
    ]
];

参考上面的输出数组。你可以这样写代码。


$counter = 0;
foreach($array as $data)
{
    if(isset($data['code'][$counter]))
    {
        $code = $data['code'][$counter];

        $data = [
            'price' => $data['price'][$counter];
        ];

        $this->db->where($column, $code);

        $this->db->update('database-table-name',$data);  
    }

    $counter++;
}

【讨论】:

  • Ahsan Zameer 当我在上面尝试时,我在去模型之前从控制器收到错误。错误如下消息:遇到非数字值
  • 你能告诉我在哪一行显示错误吗?所以我可以相应地编辑我的代码
  • 实际上在发送到模型之前.. 我​​已经计算了一些值,例如 $final['price'][$i]= ($data['results'][$i]->purchase_price + $_POST['价格'][$i]); $final['code'][$i] = $_POST['code'][$i];在这一行 => $final['price'][$i]... 我得到错误
  • $data['results'][$i]->purchase_price 值是否具有整数值?
  • _print($data['results'][$i]->purchase_price);死;字符串(3)“200”
猜你喜欢
  • 2013-06-12
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2019-01-13
相关资源
最近更新 更多