Codeigniter省略活动记录

时间:2017-03-06 06:02:22

标签: php codeigniter

我尝试像这样调用我的codeigniter活动记录:

function updateParticipant($data){
    $final_data = array(
        'order' => $data['order'],
    );
    $this->db->set($final_data);
    $this->db->where('type_participant', $data['type_participant']);
    $this->db->where('order', $data['prev_order']);
    $this->db->where('challenge_id', $data['challenge_id']);
    $this->db->update('mainchallenge mc JOIN participant p on mc.id_participant = p.id_participant');
}

它会产生这样的结果:

  

在mc.id_participant =上更新主要挑战mc JOIN参与者p   p.id_participant SET order = 0WHERE type_participant = '1'和   order = '1'和 challenge_id ='3'

正如您所看到的,0和其他地方之间没有空格,也是'1'AND导致语法错误。我怎么能克服这个?谢谢

3 个答案:

答案 0 :(得分:0)

function updateParticipant($data){ $final_data = array( 'order' => $data['order'], ); $this->db->set($final_data); $this->db->where(' type_participant ', $data['type_participant']); $this->db->where(' order ', $data['prev_order']); $this->db->where(' challenge_i d ', $data['challenge_id']); $this->db->update(' mainchallenge mc JOIN participant p on mc.id_participant = p.id_participant '); 条件中提供空格

$db['default']['_protect_identifiers']= FALSE;

}

或者您可以使用此解决方案

在数据库配置文件(./application/config/database.php)中,使用默认设置向阵列添加新元素。

async

答案 1 :(得分:0)

不确定间距,但使用活动记录连接以使其更具可读性。

function updateParticipant($data){
    $final_data = array(
        'order' => $data['order'],
    );
    $this->db->set($final_data);
    $this->db->where('type_participant', $data['type_participant']);
    $this->db->where('order', $data['prev_order']);
    $this->db->where('challenge_id', $data['challenge_id']);
    $this->db->join('participant p', 'mc.id_participant = p.id_participant');
    $this->db->update('mainchallenge mc');
}

尝试使用此

输出结果
echo $this->db->last_query();

我对任何间距问题感到惊讶,在构建时输出最后一个查询将显示CI中的间距是否不正确,或者您是否有其他语法错误...

答案 2 :(得分:-1)

将变量设置为字符串。将$ data ['order']替换为“$ data [order]”。它应该工作。

 $final_data = array(
            'order' => "$data[order]",
        );