CodeIgniter - привязка взрыва / запроса, вызывающая нежелательную строку - PullRequest
1 голос
/ 31 января 2011

У меня следующий запрос на обновление кода в CodeIgniter:

$sql = "UPDATE fanout.manual_data
                SET call_leader_id = ?
                WHERE id IN (?)";

$q = $this->db->query($sql, array($leaderID, implode(", ", $empIDs)));

Имплода создает строку всех идентификаторов в моем массиве. Однако это приводит к тому, что запрос выглядит следующим образом:

UPDATE fanout.manual_data SET call_leader_id = '55993' WHERE id IN ('57232, 0097726, 0076034');

Когда мне нужно:

UPDATE fanout.manual_data SET call_leader_id = '55993' WHERE id IN (57232, 0097726, 0076034);

Единственная разница, это одинарные кавычки, окружающие строку идентификаторов. Это то, что мне нужно сделать самому и пропустить привязки запросов CI (http://codeigniter.com/user_guide/database/queries.html) или CI может справиться, и я просто пропускаю шаг?

Спасибо.

1 Ответ

1 голос
/ 31 января 2011

Я не думаю, что вы можете пропустить это поведение. Технически вы передаете строку, поэтому CI интерпретирует ее как таковую и просто заключает в кавычки.

Я думаю, что вам лучше просто конкатенировать $empIDs вручную (например, используя цикл foreach), экранируя их с помощью $this->db->escape(), если вы хотите быть уверены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...