0

CI を使用して、サブクエリで挿入無視を行う必要があります。これを行おうとすると、コード点火エラーが発生します。

$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 の 2 番目のパラメーターが欠落していることがわかります。考え?

4

1 に答える 1

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);
于 2013-03-02T18:30:22.430 に答える