Edit report at http://bugs.php.net/bug.php?id=38805&edit=1

 ID:               38805
 Comment by:       
 Reported by:      gkrajci at arescorporation dot com
 Summary:          PDO Truncates Text from SQL Server Text Data Type
                   Field
 Status:           Assigned
 Type:             Bug
 Package:          PDO related
 Operating System: Windows NT PBMA-WB2 5.2 build 37
 PHP Version:      5.1.6
 Assigned To:      sfox

 New Comment:

I solved this problem by adding to my php script a TEXTSIZE that is less
than the allowed memory from the MSSQL server. 



Remember, all the number are in Bytes, so I kept playing with the
numbers, until this worked:

// ranges from 0 - 3145728 = 3Megabytes.  Default to 4096.

$sql = "SET TEXTSIZE 3145728";

mssql_query($sql, $db) or die(mssql_get_last_message());



Remember to always know what the allowed upload size for your server
is.



I hope this helps someone


Previous Comments:
------------------------------------------------------------------------
[2010-02-12 16:57:02] [email protected]

Those changes are still in SVN. That means the TEXTLIMIT var is being
set to its highest possible value, which in turn means that truncation
shouldn't be an issue now.



$pdo->query('SET TEXTSIZE 300000');



should work from PHP 5.2.11 up, it just needs doccing.

------------------------------------------------------------------------
[2010-02-12 09:05:28] philipp at servicemail24 dot de

This problem is actually fixed in cvs:



http://www.mail-archive.com/[email protected]/msg40731.html

http://www.mail-archive.com/[email protected]/msg40711.html



Here is the working source code:



http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_dblib/



I have no idea why these fixes aren't included in the 5.2 and 5.3
releases!



@sfox can you ensure that pdo_dblib is updated with the release of
5.2.13 and 5.3.2?

------------------------------------------------------------------------
[2010-02-11 15:40:43] philipp at servicemail24 dot de

php 5.3.2 dotdeb still suffers from this problem.



does this fix help?



"Possible fix: remove "case SQLTEXT" from

ext/pdo_dblib/dblib_stmt.c:execute and let it fall though to default."

------------------------------------------------------------------------
[2010-01-22 22:51:02] ssufficool at gmail dot com

I imagine the problem is that PDO DBLIB just mem-copies the first packet
of TEXT without calling dbgettext() to retrieve the remainder.



MSSQL handles TEXT fields using dbconvert() which may call dbgettext()
downstream.



Possible fix: remove "case SQLTEXT" from
ext/pdo_dblib/dblib_stmt.c:execute and let it fall though to default.

------------------------------------------------------------------------
[2010-01-10 23:22:50] [email protected]

Steph, does this need any additional changes to pdo_mssql/pdo_dblib? And
what exactly should be documented?

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    http://bugs.php.net/bug.php?id=38805


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=38805&edit=1

Reply via email to