lud*_*vic 9 php mysql codeigniter categories
我正在尝试用CodeIgniter做一个小型的开放式CMS,我现在正在开发类别系统.
我真的坚持这一点,经过多次尝试和论坛帖后我没有解决它.
我有2个mySQL表
我想用编辑类别名称表单中的数据更新我的#1 TABLE(此表单在循环中填充输入以一次编辑多个类别)
这里是 :
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'; }
Run Code Online (Sandbox Code Playgroud)
这是从DB中检索输入的表单,您可以在其中编辑名称.
好了,现在编辑类别名称时,您可以转到"update_categories"CONTROLLER来执行UPDATE请求
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);
}
Run Code Online (Sandbox Code Playgroud)
这将获得多个输入字段以更新DB.现在我转到MODEL来更新数据库中的数据和这里的问题:
function update_categories($data) {
?
Run Code Online (Sandbox Code Playgroud)
我不知道如何正确地使用insert_batch但使用UPDATE更新名称,因为虽然我需要更新TABLE#1,但我还需要在表#2 Double UPDATE中更新字段中的名称在表#1中的2个表和1个批次更新中
显然,我尝试再添加一个TABLE:TABLE#3获取TABLE#1字段id并将其与TABLE#2字段id匹配,但我无法弄明白在3个表之间建立连接.
任何帮助将非常感谢!非常感谢!!(对不起,我的英语不好)
谢谢你的回答!
好的,我现在有第三个表我想检索'category_name'以在'post'中显示
我有这个 :
$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();
Run Code Online (Sandbox Code Playgroud)
但它说'on子句'中有未知列'assigned_categories.ft_categories_id'
(assigned_categories是我的第三个表,其中包含帖子ID和类别ID)
任何的想法?
Kan*_*iya 16
试着用 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');
Run Code Online (Sandbox Code Playgroud)
第一个参数将包含表名,第二个参数是值的关联数组,第三个参数是where键.
希望这有帮助........................
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')
Run Code Online (Sandbox Code Playgroud)
Jar*_*zyk -2
首先,您无法在一个查询中更新多行,因此没有像 insert_batch() 这样的更新方法 - 您必须在每一行的循环中执行此操作。接下来,您应该使用第三个表使用外键(InnoDB,性能更差)以一对多关系将帖子ID与类别ID链接起来,或者至少使用TABLE#2中链接到类别ID的category_id字段,这样您就不需要如果 TABLE#1 发生更改,则需要更新此表。