2

私はこのようなクエリを書いています:-

$data = array(
    'company_billing' => "if (company_billing  = $userId, (NULL), $userId)",
    'company_admin' => "if (company_admin  = $userId, (NULL), $userId)",
);

$this->db->where('id', $organizationId);
$this->db->update('organization', $data);

私は次のようなものを期待していました:-

UPDATE `organization` SET `organization`.`company_billing` = if (company_billing = 2, (NULL), 2), `organization`.`company_admin` = if (company_admin = 2, (NULL), 2) WHERE `id` = 1

しかし、私は得ています:-

UPDATE `organization` SET `organization`.`company_billing` = 'if (company_billing = 2, (NULL), 2)', `organization`.`company_admin` = 'if (company_admin = 2, (NULL), 2)' WHERE `id` = 1

if条件がブロックされている場合は、これらの引用符をスキップしたいと思います。

これを達成する方法はありますか、それともネイティブクエリを作成する必要がありますか?

ありがとう

4

1 に答える 1

1

::update::insert関数値は自動的にエスケープされ、より安全なクエリが生成されます。

$this->db->set('company_billing' , "if (company_billing  = $userId, (NULL), $userId)", false);
$this->db->set('company_admin', "if (company_admin  = $userId, (NULL), $userId)", false);
$this->db->where('id', $organizationId);
$this->db->update('organization');
于 2012-03-21T18:56:49.943 に答える