2013-03-02 66 views
0

使用CI,我需要做一个插入忽略与子查询。当我尝试执行此操作时,出现代码点火器错误:codeigniter使用set()与insert_string()

$data = array(
      "user_id" => $user_id, 
      "workload_id" => $wid 
    ); 
    $this->db->set($data); 
    $this->db->set("order", "(SELECT ifnull(max(`order`)+1, 0) FROM (SELECT * FROM default_workloads_users A) B WHERE user_id=".$user_id.")", FALSE); 
    //$this->db->insert("default_workloads_users"); 
    $ins = $this->db->insert_string("default_workloads_users"); 
    $ins = str_replace("INSERT", "INSERT IGNORE", $ins); 
    $this->db->query($ins); 

它告诉我我缺少insert_string的第二个参数。思考?

回答

0

想通了一个方法来破解。首先使用insert_string,然后将子查询str_replace放入语句中。新代码:

$data = array(
      "user_id" => $user_id, 
      "workload_id" => $wid, 
      "order" => "@order" 
    ); 
$ins = $this->db->insert_string("default_workloads_users", $data); 
$ins = str_replace("INSERT", "INSERT IGNORE", $ins); 
$ins = str_replace("@order","(SELECT ifnull(max(`order`)+1, 0) FROM (SELECT * FROM default_workloads_users A) B WHERE user_id=".$user_id.")",$ins); 
$this->db->query($ins);