【问题标题】:Database error in CodeigniterCodeigniter 中的数据库错误
【发布时间】:2016-08-24 14:54:05
【问题描述】:

我尝试使用 Codeigniter 的查询构建器类更新我的“设置”表。 这是我的php代码:

public function update_settings($post_array) {

    foreach ($post_array as $setting_name => $setting_value) {

        $this->db->set('setting_value', $setting_value);
        $this->db->where('setting_name', $setting_name);
        $query_parts[] = $this->db->get_compiled_update('settings');

    }

    $full_query = implode(';', $query_parts);

    $this->db->query($this->db->escape($full_query));

    if ($this->db->affected_rows() == 1 || $this->db->affected_rows() == 0) {
        return TRUE;
    } else {
        return FALSE;
    }

}

当我提交我的设置表单时。波纹管错误正在弹出。

【问题讨论】:

  • 逐个运行查询
  • 是的!但我认为这种方法很好,因为当我一个一个运行更新查询时,它会进行多个数据库调用。
  • 没关系。数据库非常习惯于调用,这没有问题。
  • 感谢您的输入 :) 但仍然想知道导致错误的原因。当我将上图中生成的 sql 字符串复制到 phpmyadmin sql 运行表单中时,它工作正常。
  • 这个错误是因为你不能同时运行多个查询。

标签: php sql database codeigniter codeigniter-3


【解决方案1】:

根据这里的 codeignitor 文档是这样做的。

$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');
// 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')

【讨论】:

    猜你喜欢
    • 2014-02-28
    • 2015-06-28
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    相关资源
    最近更新 更多