I was reading from a MEMO field (long varchar) in MSAccess, but the data was consistently truncated at 255 characters. I tried all the combinations of odbc_longreadlen() and odbc_binmode() (and odbc.defaultlrl) that I could think of but none of them resolved the problem.
The only fix that worked was to modify my query from "SELECT Field1, Field2 FROM TableName" to "SELECT * FROM TableName".
I suspect that you could cast the field to force the appropriate data type, but when it finally worked after three days of struggle I didn't even try.