ошибка привязки oci_bind_by_name — не ко всем переменным

#php #oracle #oracle-call-interface

#php #Oracle #oracle-call-interface

Вопрос:

Я хочу привязать переменные в запросе, подобном этому:

 SELECT people.name, conf.id
FROM people, conf
WHERE people.confid=conf.id AND people.name LIKE :c1 AND conf.name LIKE :c2
  

Привязка (я пытаюсь использовать очень простое выражение):

 $tmp = '%';
$tmp2= '%';

oci_bind_by_name($statement, ':c1', $tmp);
oci_bind_by_name($statement, ':c2', $tmp2);
  

Предупреждение: oci_execute() [function.oci-execute]: ORA-01008: не все переменные привязаны в ….php в строке 162

Если я сгенерирую запрос «на лету» с помощью: {$tmp} вместо:c1, это сработает.

Есть идеи?

Спасибо!

Комментарии:

1. Откуда $statement берется?

2. ‘$statement = oci_parse($connection, $query);’ где query — это запрос, приведенный выше.

3. Я предлагаю вам отредактировать вопрос и заменить ваши комментарии о том, как выглядит код (в котором я не вижу ничего неправильного), на реальный код. Извините, что не был более полезным.

4. Я решил проблему: я не вызывал oci_free_statement() метод. Это немного странно, потому что на моей другой странице в том же соединении с базой данных привязка работала нормально, без вызова бесплатного метода…

Ответ №1:

Я решил проблему:

Я не вызывал метод oci_free_statement(). Это немного странно, потому что на моей другой странице в том же соединении с базой данных привязка работала нормально, без вызова бесплатного метода…