PostgreSQL: ни один оператор не соответствует данному имени и типу аргумента. Вам может понадобиться добавить явное приведение типов в codeigniter, используя функцию существующие - PullRequest
0 голосов
/ 16 января 2020

Итак, у меня есть этот код

$this->db->query('SELECT id_anggota FROM karyawan WHERE EXISTS ( SELECT id_anggota FROM pengunduran_diri WHERE tgl_pengunduran <= '.$row->end_date.')');

дело в том, что я хочу сделать данные подсчета за период, так как это программа HRD, одно поле показывает сумму работников за период, как мы знаем компания получит и потеряет работника в конце концов. И все же я запутался в этой ошибке. Кто-нибудь может мне помочь? PS это внутри foreach

1 Ответ

0 голосов
/ 16 января 2020

Литералы даты в Postgres заключены в одинарные кавычки, чего не делает ваш запрос. Но помимо этого, в идеале вы должны использовать здесь подготовленное утверждение, которое обрабатывает правильное экранирование литералов для вас. Codeigniter не поддерживает подготовленные операторы, но поддерживает привязки запросов:

$sql =  "SELECT id_anggota FROM karyawan WHERE EXISTS (";
$sql .= "    SELECT 1 FROM pengunduran_diri WHERE tgl_pengunduran <= ?)";
$this->db->query($sql, array($row->end_date));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...