Alexey(Eburg)
Новичок
PHP+MSSQL. PHP обрезает результат выполнения MSSQL функции.
Доброго времени суток. Есть функция написанная на T-SQL:
На сервере запрос выполняется нормально, то есть выдает то что нужно.
PHP выводит стабильно, что длина строки 255, то есть происходит обрезание текста. Хотя очень длинные поля из таблиц выбирает нормально, а вот из функции не хочет. Может кто сталкивался - подскажите что делать?
-~{}~ 25.05.06 14:18:
Решение как всегда пришло после вопроса на форуме!
Запрос нужно переписать следующим образом:
select convert(text,dbo.fn_test()) as test
В T-SQL функции нельзя возвращать скалярное значение типа text, а только этот тип возвращается функциями php работы с MSSQL c числом знаков >255, то есть надо просто показать, что я возвращаю данные типа text. Пока я вижу, что это единственная возмжость вернуть корректный результат.
Кстати, это первое неудобство при работе с функциями php по работе с MSSQL, которое я обнаружил.
Надеюсь мои выводы кому-нибудь помогут!
-~{}~ 25.05.06 16:35:
Резюмируя еще разок скажу, что все варчары выводятся размерностью 255, то есть если у вас поле в базе varchar(1000), то выбрав его вы получите только 255 знаков. Но я думаю у опытных людей таких вещей не возникнет!
Доброго времени суток. Есть функция написанная на T-SQL:
PHP:
CREATE FUNCTION dbo.fn_test()
RETURNS varchar(8000)
AS
BEGIN
return 'Строка содержащая >255 символов'
END
В php пытаюсь вывести результат выполнения этой функции
$res = mssql_query('select dbo.fn_test() as test');
for ($i=0; $row = mssql_fetch_assoc($res); $i++)
{
echo strlen($row['test']);
}
PHP выводит стабильно, что длина строки 255, то есть происходит обрезание текста. Хотя очень длинные поля из таблиц выбирает нормально, а вот из функции не хочет. Может кто сталкивался - подскажите что делать?
-~{}~ 25.05.06 14:18:
Решение как всегда пришло после вопроса на форуме!
Запрос нужно переписать следующим образом:
select convert(text,dbo.fn_test()) as test
В T-SQL функции нельзя возвращать скалярное значение типа text, а только этот тип возвращается функциями php работы с MSSQL c числом знаков >255, то есть надо просто показать, что я возвращаю данные типа text. Пока я вижу, что это единственная возмжость вернуть корректный результат.
Кстати, это первое неудобство при работе с функциями php по работе с MSSQL, которое я обнаружил.
Надеюсь мои выводы кому-нибудь помогут!
-~{}~ 25.05.06 16:35:
Резюмируя еще разок скажу, что все варчары выводятся размерностью 255, то есть если у вас поле в базе varchar(1000), то выбрав его вы получите только 255 знаков. Но я думаю у опытных людей таких вещей не возникнет!