I need the user id's param to not have single quotes. I've tried trim and a few other things but it does not work? I think maybe I need to define it as integer but the fact is, it's IDs are with commas like "9166,2234,2256,9987" so if I cast it to int it just takes the first number...
$user_ids = "9166,2234,2256,9987";
$start_date = "2017-05-25 00:00:00";
$end_date = "2021-05-25 00:00:00":
$params[] = $user_ids;
$params[] = $start_date;
$params[] = $end_date;
$sql = "SELECT DISTINCT*
date(user_certificates.created_date) AS date,
user_certificates.user_id,
user_certificates.event_id AS course_id
FROM user_certificates
join event_skills on event_skills.event_id = user_certificates.event_id
join events on events.id = user_certificates.event_id
WHERE 1=1
$certificate_type_condition
and event_skills.skill_id = 0 and events.is_teqtivity = 0
AND user_certificates.user_id IN (
?
)
AND user_certificates.created_date >= ? AND user_certificates.created_date <= ?
";
$query = $this->db->query($sql, $params);
return array($query->result(), $this->db->last_query());
Note, the query needs to look like this if hardcoded(but it has single quotes around the IDs list so will not work):
SELECT DISTINCT date(user_certificates.created_date) AS date, user_certificates.user_id, user_certificates.event_id AS course_id
FROM user_certificates
join event_skills on event_skills.event_id = user_certificates.event_id
join events on events.id = user_certificates.event_id
WHERE 1=1
and event_skills.skill_id = 0
and events.is_teqtivity = 0
AND user_certificates.user_id IN (9166,2234,2256,9987)
AND user_certificates.created_date >= '2017-05-25 00:00:00'
AND user_certificates.created_date <= '2021-06-25 23:59:59 23:59:59'
source https://stackoverflow.com/questions/68135856/binding-variables-codeigniter
Comments
Post a Comment