OCIBindByName: "вываливание" куска памяти в переменную

Scum

Новичок
OCIBindByName: "вываливание" куска памяти в переменную

Проблема в следующем. В РНР-переменную, привязанную с помощью OCIBindByName, выводится, часть памяти (там и РНР-код и PL/SQL и все подряд). Происходило это если переменная была не того типа (в PL/SQL - число, а в РНР - строка), плюс РНР-переменная ещё и сессионная была(register_globals=on, так её и привязывали прям по имени, не испоьзуя никакого приведения). Решилось все с помощью приведения типов.
Интересует следующее. Происходило это не каждый раз и не в каждом скрипте. Насколько это частая проблема?
РНР: 4.3.10
 

tony2001

TeaM PHPClub
1) попробуйте на новой версии oci8 (с pecl4win.php.net).
2) приведите код.
3) говорите на более понятном языке.
 

Scum

Новичок
3) постараюсь
2) нет возможности. Т.к. смоделировать ситуацию в которой появилась бы ошибка, не удалось. А в те проекты, в которых возникали проблемы, были построены на нескольких (4-5) фреймах. Поэтому приводить ИХ исходный код не хочется - много.
1) попробую, если подобный "казус" произойдет еще раз - хотя бы выяснить зависит ли она от версии oci8

попробую ещё раз уменьшить количество кода.

ЗЫ: Насколько "нормально" использование в переменных из $_SESSION в ocibindbyname() "напрямую"?
PHP:
OCIBindByName($update, ":test", $_SESSION['test'], 32);
 

tony2001

TeaM PHPClub
>Насколько "нормально" использование в переменных из $_SESSION в ocibindbyname() "напрямую"?

а почему вопроса "насколько нормально использование переменных с буквой 'а' в имени" не возникает?
вы меня в тупик ставите..
 

Scum

Новичок
Под "напрямую" я имел ввиду отсутствие приведения типов. Или это нормально?
 

tony2001

TeaM PHPClub
бррр. приведения во что?

ext/oci8 сам меняет тип переменной, если, скажем, мы пишем OUT параметр-строку в переменную-integer.
самый частый случай - получение OUT-параметров в несуществующие переменные (aka NULL).

или я неправильно понял проблему?
 

Scum

Новичок
Правильно, и спасибо за терпение.
Проблема возникали с процедурами, которые имеют как входные, так и выходные переменные.
Несовпадали ни те, ни другие( в базе числа, а в РНР - строки).
Все заработало после того, как входные (строковые) переменные, содержащие числа, были приведены в integer. А вместо выходных стали использоваться несуществующие.
 
Сверху