2013-01-08 54 views
5

我一直在环顾四周,但我还没有找到答案。如果你知道答案,请帮助。在Codeigniter中更新多行

如何更新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,但我不确定如何在数据库上进行更新。如何更新TrueHelloSettings Name并更新GoodWorld

我听说过insert_batch(),但是有没有update_batch()

+0

我觉得一个关联数组,它可以帮助你 http://stackoverflow.com/questions/7759514/update-multiple-rows -with-different-values-in-a-single-query-mysql –

回答

13

您使用的是有效记录吗?

是有更新批次:$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'); 

从文档:

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

+0

感谢!我一直在盯着来自CI的同样的文件,但当你回答这个问题时,我只有灯泡。嘿嘿愚蠢的我..再次感谢! – jsd

+0

我有一个后续问题:如何从数据库检索发布的值?这是正常的set_value()?谢谢! – jsd

+0

@JeffSimonsDecena,你是什么意思从正常的set_value()检索数据库? CI文档中的set_value()用于重新填充表单。从数据库检索数据可以在这里找到[选择数据](http://ellislab.com/codeigniter/user-guide/database/active_record.html#select) –

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子句中使用的列。

-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); 
} 

In $ this-> db-> where('ID','1'); ID是您的表格字段,1是值。 在数组第一个参数包含表名,第二个参数是值

+0

这是一个很糟糕的做多行更新的方式,因为你是运行2个或更多查询,您只能运行1个查询。 –