2017-03-06 83 views
1

我尝试打电话给我笨活动记录是这样的:笨忽略空格活动记录

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'); 
} 

会产生这样的:

UPDATE mainchallenge MC JOIN参与者P 4上mc.id_participant = p.id_participant SET order = 0WHEREtype_participant = “1'和 order = “1'和challenge_id =‘3’

正如你可以看到,有0和地方之间没有空格,也是在” 1'和那使我语法错误。我该如何克服这一点?谢谢

回答

-1

将变量设置为字符串。将$ data ['order']替换为“$ data [order]”。它应该工作。在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

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

这是错误的。 –

+0

请提一下为什么这是错误的。谢谢 –

+0

尝试一下,看看你会弄明白。 –

0

给予空间。 PHP)使用默认设置为阵列添加一个新元素。

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

你很确定吗?你测试过了吗? –

+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_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不正确,或者如果你有另一个语法错误...