我一直在寻找,但我还没有找到答案。如果你知道答案,请帮忙。
如何更新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()
?
答案 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是值。 在数组中,第一个参数将包含表名,第二个参数是值的关联数组