Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Длинна результата возвращаемого через ODBC


Автор: 02077461 16.4.2007, 17:48
Работаю с Access через ODBC на PHP. Надо перенести данные в mysql базу. придумал делать так: Генерировать PHP код с mysql_query запросами в файл.inc и затем инклудить его в исполняемый скрипт. Запрос 
Код

select LCase([поле 1]) as `code`, ''''&[поле 2]&''', '''&[поле 3]&''', '''&поле5'''' as `values` FROM [Табличка в 8000 записей]
 возвращает набор данных типа 
Код

'1', 'asdf', 'asd', '123'
 я это дело вставляю в шаблон
Код
 $inser_tpl = "\tmysql_query(\"".str_replace("\"", "\\\"", "insert into `tname` VALUES (".$id.", ".$odbc_ass["values"]).")\");\n";
// где $odbc_ass["values"] = '1', 'asdf', 'asd', '123'
, получаю PHP код, который записываю в файл, затем делаю include и таким образом переношу данные.
И вот в одном файле оказалась интересная запись. 
Код

    mysql_query("insert into `tname` VALUES (2424, 'Запись', 'Еще одна запись', '', '', '0', '0', 'Текст, много текста

Очень много текста, я столько текста не хотел получать

И еще немного текста, потом непонятный значек и... );


Общая длинна результата получаемого из запроса -- 250 символов. А в этой записи одно поле значительно длиннее этих пресловутых 250-ти байт. Как обойти данное ограничение?
Заранее благодарю.

Автор: Akina 16.4.2007, 17:57
Я не понял, на чьей стороне проблема? Access? ODBC? PHP?

Автор: 02077461 17.4.2007, 12:38
Вот и я не понял, однако результат удручающий.
Я пологаю, что это проблема Access при работе через ODBC, хотя может быть и не так.
Как бы там ни было, но факт остается -- результат -- 250 символов.

Автор: Akina 17.4.2007, 13:30
Блин! да я вообще не понял ничего в том что ты наговорил!!!

Набор данных возвращается правильный??? тот, который 
Цитата(02077461 @  16.4.2007,  18:48 Найти цитируемый пост)
набор данных типа 
Код

'1', 'asdf', 'asd', '123'


Автор: 02077461 18.4.2007, 11:25
Прошу прощения, если выразился недостаточно четко.
Если длинна возвращаемого результата превышает 250 символов (число 308 в теме было ошибочным), то результат обрезается до 250, набор правильный, только, к примеру, вместо 
Код

'1', 'asdf', 'asd', '123'
 я получаю 
Код

'1', 'asdf', 'asd', '1
. Если не принимать во внимание этот маленький недостаток, то все работает правильно.
С задачей я справился другим способом, классическим -- получаю массив, и "склеиваю" строку PHP скриптом (вместо получения готовой строки от СУБД).  Однако же, интересно, что за аномалия с этими 250 символами.
Заранее прошу извинить, если и на этот раз что-либо объяснил невразумительно.

Автор: Akina 18.4.2007, 12:46
а-а-а! вон ты о чем... ну так все правильно. 
Ты же делаешь конкатенацию стрингов, получаешь стринг... а какая максимальная длина у стрингового поля?

Добавлено через 1 минуту и 20 секунд
я только не понимаю, зачем ты данные через РНР тащишь... что мешает открыть 2 ODBC-коннекта и напрямую сделать insert into

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)