I'd like to do update for a joined table. But, I have problem with the single quote.
My CI active record:
function upd_pic_hps_drtu($i_lamp,$i_id_req){
$this->db->set("pm_rapd.STATUS",1);
$this->db->where("pm_ap.UPL_FILENAME", $i_lamp);
$this->db->where("pm_rapd.ID_REQUIREMENT_ASSIGN_PIC", $i_id_req);
$this->db->update("pm_requirement_assign_pic_d pm_rapd INNER JOIN pm_activity_project pm_ap ON pm_rapd.RECEIVED_BY = pm_ap.NIP");
}
This is the query looks like:
UPDATE `pm_requirement_assign_pic_d pm_rapd INNER JOIN pm_activity_project pm_ap ON pm_rapd`.`RECEIVED_BY =` `pm_ap`.`NIP` SET `pm_rapd`.`STATUS` = 1 WHERE `pm_ap`.`UPL_FILENAME` = 'condition_1' AND `pm_rapd`.`ID_REQUIREMENT_ASSIGN_PIC` = 'condition_2'
The desired and correct query should be:
UPDATE pm_requirement_assign_pic_d pm_rapd INNER JOIN pm_activity_project pm_ap ON pm_rapd.RECEIVED_BY = pm_ap.NIP SET `pm_rapd`.`STATUS` = 1 WHERE `pm_ap`.`UPL_FILENAME` = 'condition_1' AND `pm_rapd`.`ID_REQUIREMENT_ASSIGN_PIC` = 'condition_2'
I'm sure there is more than one way to do what you are trying to achieve, but I like to use CodeIgniter DB's query bindings feature. Anytime I'm doing some query that is more than just a simple one, I use the query bindings. For more information see the user guide: https://www.codeigniter.com/user_guide/database/queries.html#query-bindings
function upd_pic_hps_drtu( $i_lamp, $i_id_req )
{
$this->db->query('
UPDATE pm_requirement_assign_pic_d pm_rapd
INNER JOIN pm_activity_project pm_ap
ON pm_rapd.RECEIVED_BY = pm_ap.NIP
SET `pm_rapd`.`STATUS` = 1
WHERE `pm_ap`.`UPL_FILENAME` = ?
AND `pm_rapd`.`ID_REQUIREMENT_ASSIGN_PIC` = ?
', array( $i_lamp, $i_id_req ) );
}
Notice how I used your desired query, but substituted the values with question marks, and then added the values in an array as the second parameter of the query method.