gpt4 book ai didi

php - 使用 CodeIgniter 更新批处理

转载 作者:可可西里 更新时间:2023-11-01 06:28:54 27 4
gpt4 key购买 nike

我正在尝试使用 CodeIgniter 做一个小型的开放式 CMS,我现在正在研究类别系统。

我真的被这个问题困住了,经过多次尝试和论坛帖子后我没有解决它。

我有 2 个 mySQL 表

  • #1:ft_categories(列出所有类别的名称,包含 2 个字段:category_name 和 id)
  • #2:ft_upload_data(列出所有带有 id、标题、类别等字段的帖子,日期等)

我想用编辑类别名称表单中的数据更新我的 #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'; }

这是包含从数据库中检索到的输入的表单,您可以在其中编辑名称。

好的,现在当您编辑类别的名称时,您将转到“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 因为虽然我需要更新 TABLE #1,但我还需要更新字段中的名称表 #2对 2 个表进行双重更新,并在表 #1 中进行 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();

但它说'on 子句'中有未知列'assigned_categories.ft_categories_id'

(assigned_categories 是我的第三个表,帖子 ID 和类别 ID 匹配)

有什么想法吗?

最佳答案

尝试使用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');

第一个参数将包含表名,第二个是值的关联数组,第三个参数是 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')

关于php - 使用 CodeIgniter 更新批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264955/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com