Ask a Question related to PHP Development, Design and Development.
-
phpbug at chipple dot net #1
#25972 [Opn]: ODBC truncates multi-byte text (w/ MSSQL)
ID: 25972
User updated by: phpbug at chipple dot net
Reported By: phpbug at chipple dot net
Status: Open
Bug Type: ODBC related
Operating System: Win2K 5.00.2195 SP4
PHP Version: 4.3.4RC2
New Comment:
Sorry here's the MSSQL extension code that should have been in the 2nd
part of "Reproduce code".
// MSSQL EXTENSION, data retrieved correctly
$oConn = mssql_connect("localhost",C_Gen_sDbUser,C_Gen_sDbP assword);
mssql_select_db("icds",$oConn);
$oRs = mssql_query("SELECT * FROM T_Course WHERE aCourseID=1");
$aRow = mssql_fetch_array($oRs);
// GOOD: Complete title retrieved (60 chars=120 bytes)
echo $aRow["tTitle"];
mssql_close($oConn);
Previous Comments:
------------------------------------------------------------------------
[2003-10-23 23:26:31] phpbug at chipple dot net
Description:
------------
This bug has been observed with PHP 4.3.3 and 4.3.4RC2.
Database: MSSQL 2000 (8.00.760) SP3
I have a MSSQL database with a table containing a column tTitle of type
nvarchar(80) (which stands for 80 multi-byte characters).
When a string of 60 Japanese double-byte characters (120 bytes) stored
in column tTitle is retrieved using PHP's ODBC extension, the value is
truncated to 80 bytes.
The PHP MSSQL extension retrieves the data correctly.
Microsoft's ODBC driver (used from ASP) retrieves the data correctly.
MSSQL table structure:
CREATE TABLE [dbo].[T_Course] (
[aCourseID] [int] IDENTITY (1, 1) NOT NULL ,
[tTitle] [nvarchar] (80) COLLATE Japanese_CI_AS NOT NULL
) ON [PRIMARY]
GO
Test data (CSV):
aCourseID,tTitle
1,[string of 60 Japanese double-byte characters]
SQL query:
SELECT * FROM T_Course WHERE aCourseID=1
Reproduce code:
---------------
// ODBC EXTENSION, data truncated
$oConn = odbc_connect(C_Gen_sDbDSN,C_Gen_sDbUser,C_Gen_sDbP assword);
$oRs = odbc_exec($oConn,"SELECT * FROM T_Course WHERE aCourseID=1");
$aRow = odbc_fetch_array($oRs);
// BAD: Title truncated to 80 _bytes_
echo $aRow["tTitle"];
odbc_close($oConn);
// MSSQL EXTENSION, data retrieved correctly
$oConn = odbc_connect(C_Gen_sDbDSN,C_Gen_sDbUser,C_Gen_sDbP assword);
$oRs = odbc_exec($oConn,"SELECT * FROM T_Course WHERE aCourseID=1");
$aRow = odbc_fetch_array($oRs);
// GOOD: Complete title retrieved (60 chars=120 bytes)
echo $aRow["tTitle"];
odbc_close($oConn);
Expected result:
----------------
The ODBC extension should truncate the retrieved data to 80 characters
(instead of 80 bytes).
Actual result:
--------------
The ODBC extension truncates the retrieved data to 80 bytes.
------------------------------------------------------------------------
--
Edit this bug report at [url]http://bugs.php.net/?id=25972&edit=1[/url]
phpbug at chipple dot net Guest
-
#40687 [NEW]: ODBC+PHP+MSSQL generate error while executing multi query in one transaction
From: scottsdev at gmail dot com Operating system: Linux PHP version: 5.2.1 PHP Bug Type: ODBC related Bug description: ... -
#39863 [NEW]: file_exists() silently truncates after a null byte
From: djcapelis at gmail dot com Operating system: Linux, x86 PHP version: 4.4.4 PHP Bug Type: *Directory/Filesystem... -
#25972 [Ana]: ODBC truncates multi-byte text (w/ MSSQL)
ID: 25972 Updated by: kalowsky@php.net Reported By: phpbug at chipple dot net Status: Analyzed Bug Type: ... -
#25972 [Ver->Ana]: ODBC truncates multi-byte text (w/ MSSQL)
ID: 25972 Updated by: moriyoshi@php.net Reported By: phpbug at chipple dot net -Status: Verified +Status: ... -
#25972 [NEW]: ODBC truncates multi-byte text (w/ MSSQL)
From: phpbug at chipple dot net Operating system: Win2K 5.00.2195 SP4 PHP version: 4.3.4RC2 PHP Bug Type: ODBC related Bug...



Reply With Quote

