用CodeIgniter更新批处理
我想用CodeIgniter做一个小型的开放CMS,现在我正在处理类别系统。用CodeIgniter更新批处理
我真的坚持这一点,经过多次尝试和论坛后,我没有解决它。
我有2 MySQL表
- #1:ft_categories(列出所有categorie与2个字段名称: CATEGORY_NAME和id)
- #2:ft_upload_data(列表中包含的ID字段中的所有帖子,标题,类别, 日期等)
我想更新我的#1表在编辑categorie的名字形式DATAS(这种形式是在一个循环中一次修改多个类别充满输入)
这就是:
if ($result != NULL) {
echo form_open('admin/update_categories/');
if (isset($result) && $result != NULL) {
foreach ($result as $row) {
echo form_input('category_name[]' ,$row->category_name);
echo anchor("admin/delete_category/$row->category_name", 'Delete category');
echo '<br /><br />';
}
echo '<br /><br />';
echo form_submit('','Save');
echo form_close();
} } else { echo 'NO categories'; }
这是从数据库中,你可以编辑姓名检索输入的形式。
现在好了,当你编辑categorie的名字你去“update_categories” CONTROLLER做更新请求
function update_categories(){
$i = 0;
foreach ($this->input->post('category_name') as $cat)
$data[$i++]['category_name'] = $cat;
// The $i++ creates a multi-dimensional array to insert
// multiple rows into the DB.
$this->admin_model->update_categories($data);
}
这将获得数倍的输入字段来更新数据库。 现在我去到模型更新数据库中的数据和这里的问题:
function update_categories($data) {
?
我不知道我能做些什么来的东西,如一个insert_batch但UPDATE正确更新的名称因为虽然我需要更新表#1,我还需要在该领域中的表#更新名称2 2个表双更新,并在表#1
很显然,我试图1个批量更新再添加一个TABLE:TABLE#3,它获取TABLE#1字段ID并将其与TABLE#2字段ID进行匹配,但我无法弄清楚它是否可以在3个表格之间进行连接秒。
任何帮助将非常感激!非常感谢!! (对不起我的英文不好)
感谢您的回答!
好吧,我有这个第三个表,现在我想找回“CATEGORY_NAME”到“后”
中显示此我有这样的:
$this->db->order_by('rank', 'asc');
$this->db->select('*');
$this->db->from('ft_upload_data');
$this->db->join('ft_categories', 'assigned_categories.ft_categories_id = assigned_categories.ft_upload_data_id');
$query = $this->db->get();
return $query->result();
但它说,有未知列“对条款”
在“assigned_categories.ft_categories_id”(assigned_categories是我跟的帖子ID和匹配类ID第三个表)
任何理念?
首先,你不能在一个查询中更新多行,所以没有什么像insert_batch()更新 - 你必须在每一行的循环中做到这一点。接下来,你应该使用第三个表来将post id和category id链接成一对多的关系(InnoDB,性能更差),或者至少使用链接到category id的TABLE#2中的category_id字段,所以你不需要如果TABLE#1发生更改,则需要更新此表。
尝试使用UPDATE_BATCH
$this->db->update_batch();
$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name 2' ,
'date' => 'My date 2'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name 2' ,
'date' => 'Another date 2'
)
);
$this->db->update_batch('mytable', $data, 'title');
第一个参数将包含表名,第二个是值的关联数组,第三个参数是其中键。
希望这有助于........................
UPDATE
// Produces:
// UPDATE `mytable` SET `name` = CASE
// WHEN `title` = 'My title' THEN 'My Name 2'
// WHEN `title` = 'Another title' THEN 'Another Name 2'
// ELSE `name` END,
// `date` = CASE
// WHEN `title` = 'My title' THEN 'My date 2'
// WHEN `title` = 'Another title' THEN 'Another date 2'
// ELSE `date` END
// WHERE `title` IN ('My title','Another title')
如何添加'update_batch'的条件? – 2013-01-15 07:23:40
@SomnathMuluk请参阅我的更新并检查文档.. http://ellislab.com/codeigniter/user-guide/database/active_record.html – 2013-01-15 07:32:24
如何添加多个条件? '$ this-> db-> where()'适用于update_batch吗? – 2013-01-15 07:40:45
您忘记tthat你可以做简单的AA'$数据[] ='';' – dynamic 2011-06-11 09:16:12