在Codeigniter中更新多行

时间:2013-01-08 09:35:46

标签: codeigniter sql-update

我一直在寻找,但我还没有找到答案。如果你知道答案,请帮忙。

如何更新CI中的多行?

在我的MySQL中:

我有列名:

ID, Settings Name, Settings Value ( Settings Name is Unique )

我有ff数据:

ID = 1, Settings Name = "Hello" , Settings Value = "True"
ID = 2, Settings Name = "World", Settings Value = "Good"

以及更多......

我还有一个获取Settings Value的表单,但我不确定如何在数据库上更新它。如何更新True Hello Settings Name并更新Good的{​​{1}}。

我听说World但是有insert_batch()

3 个答案:

答案 0 :(得分:16)

您使用的是Active记录吗?

是的,有一个更新批次:$this->db->update_batch();

$data = array(
array(
  'ID' => 1 ,
  'Settings Name' => 'Hello' ,
  'Settings Value' => 'True'
),
array(
  'ID' => '2' ,
  'Settings Name' => 'World' ,
  'Settings Value' => 'Good'
)
);    

$this->db->update_batch('mytable', $data, 'where_key'); 

来自文档:

  

第一个参数将包含表名,第二个参数是值的关联数组,第三个参数是where键。

答案 1 :(得分:3)

确实存在update_batch() method available in CodeIgniter already

您可以像这样使用它的例子:

$data = array(
    array(
        'ID' => 1,
        'Settings Name' => 'Hello',
        'Settings Value' => 'True'
    ),
    array(
        'ID' => 2,
        'Settings Name' => 'World',
        'Settings Value' => 'Good'
    )
);
$this->db->update_batch('tableName', $data, 'id'); 

所以你拥有的是一个数组数组,这些数组基本上保存了数据库中每一行的数据。 update_batch()的第一个参数是数据库表的名称,第二个是$data变量,第三个是要在WHEN子句中使用的列。

答案 2 :(得分:-1)

这是一个用于执行此操作的简单php代码。

<?php
function basic_update($uwi='') {
$this->load->database();
$data = array(
'ID' => 1,
'Settings Name' => 'Hello',
'Settings Value' => 'True'  
);
$this->db->where('ID', '1');
$this->db->update('<table name>', $data);
$data1 = array(
    'ID' => 2,
    'Settings Name' => 'World',
    'Settings Value' => 'Good'
    );
    $this->db->where('ID', '2');
    $this->db->update('<table name>', $data1);
}

在$ this-&gt; db-&gt; where('ID','1'); ID是您的表字段,1是值。 在数组中,第一个参数将包含表名,第二个参数是值的关联数组