我尝试以这样的方式调用我的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');
}
它将产生这样的产生:
更新MAINCHALLENGE MC加入参与者P上的MC.ID_PARTICIPANT = p.id_participant set
order
= 0 Wheretype_participant
= '1'ANDorder
= '1'andchallenge_id
='3'
如您所见,在0和位置之间没有白色空间,也会导致我遇到语法错误。我该如何克服这一点?谢谢
在where
条件下给出空间
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 ');
}
,或者您可以使用此解决方案
在数据库配置文件(./application/config/database.php)中,添加一个带有默认设置的数组的新元素。
$db['default']['_protect_identifiers']= FALSE;
不确定间距,但使用主动记录加入使其更可读。
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();
我对任何间距问题感到惊讶,输出最后一个查询,因为构建的最后查询将显示出间距是否不正确,或者是否有其他语法错误...
将变量设置为字符串。将$ data ['order']替换为" $ data [order]"。它应该起作用。
$final_data = array(
'order' => "$data[order]",
);