Проблема со строковыми параметрами ХП для FireBird1.5 под PHP5

GDR

Guest
Проблема со строковыми параметрами ХП для FireBird1.5 под PHP5

Здравствуйте. Есть БД под FB1.5.2.Еще на этой машине стоит апач и php5. Решил попробовать себя в php и написать web интерфейс к этой БД. Основная логика у меня вынесена на сервер и реализована в виде ХП. Реализовывать ее на php (переписывать заново) я посчитал ненужным. Проблема такая. Есть ХП, которой я передаю следующие параметры:

CREATE PROCEDURE FORM17OTCHET (
DESCR VARCHAR(20),
MIN_DATE DATE,
MAX_DATE DATE)
RETURNS (
--много чего)
AS
-- и т.д.
ХП я вызываю из php обычным образом

PHP:
$stmt = sprintf("select * from FORM17OTCHET('%s','%s', '%s')", $trunks_arr[$i], $date_b, $date_e);
//$trunks_ar - массив с названиями (русскими и нерусскими)
$ibquery = ibase_query($ibdatabase, $stmt) or die ("Ошибка при выполнении запроса $stmt");
Проблема - когда в параметре присутствуют русские буквы вылетает ошибка
Warning: ibase_query() [function.ibase-query]: arithmetic exception, numeric overflow, or string truncation in . И это только с русскими буквами. Копирую сгенеренную строку $stmt и выполняю в IBExpert - все проходит на ура.
Коннект к базе происходит с параметрами

PHP:
$dbpath = "128.1.200.83:d:\base\\new_stat.fdb";
$dblogin = "qqq";
$dbpassword = "www";
$dbcharset = "WIN1251";
$ibdatabase = ibase_connect($dbpath, $dblogin, $dbpassword, $dbcharset) or die("Ошибка в подключениии к $dbpath");
Т.е. так, как и следует - с указанием чарсета.
В чем может быть дело? Спасибо.

-~{}~ 16.02.05 13:51:

Вот что нарыл.
Если написать
PHP:
$trunks_arr[0] = "Параметр1";
$date_b  = "1.02.2005";
$date_e  = "2.02.2005";
$stmt = "select * from FORM17OTCHET('$trunks_arr[0]','$date_b', '$date_e')";
То в $stmt будет
PHP:
select * from FORM17OTCHET('Параметр1','1.02.2005', '2.02.2005')
Что и должно быть, но
PHP:
$ibquery = ibase_query($ibdatabase, $stmt);
вылетает с вышеупомянутой ошибкой.
А если просто написать
PHP:
 $stmt = "select * from FORM17OTCHET('Параметр1','1.02.2005', '2.02.2005')";
То все выполняется как нужно. Спрашивается - в чем ошибка? Чем одна строка отличается от другой?
 
Сверху