ID: 36342 Updated by: [EMAIL PROTECTED] Reported By: teissierb at hotmail dot com -Status: Assigned +Status: Closed Bug Type: PDO related Operating System: WIN32 PHP Version: 5.1.2 Assigned To: wez New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Fixed in CVS; try the next snapshot. Previous Comments: ------------------------------------------------------------------------ [2006-03-15 16:03:38] [EMAIL PROTECTED] This is actually a limitation of ODBC; "long" columns must be the last columns bound in a query. It is possible for PDO to workaround this by using an alternate, slower, approach to fetching the data. In the long run, you are better off making sure you query the big columns out last. ------------------------------------------------------------------------ [2006-03-08 00:04:17] marshmallow007 at hotmail dot com I'have the same bug for the 1 row with Firebird but not with MySQL! Firebird: Array ( [INDEX] => [DATE] => [TEXTE] => ) MySQL: Array ( [INDEX] => 1 [DATE] => 1969-05-07 [TEXTE] => marshmallow) ------------------------------------------------------------------------ [2006-02-23 01:07:14] travis at raybold dot com i've got a simpler test case... ON Windows XP, IIS6, PHP 5.1.2 (With the 5.1.0 php_pdo.dll and php_pdo_odbc.dll to avoid bug #35671), SQL Server 2000 accessed through PDO_ODBC. creating a simple table and inserting one row as follows: ---------------------- CREATE TABLE zTest_TBL ( Test varchar (256), TestID int ) INSERT INTO zTest_TBL ( Test ) VALUES ('test') ---------------------- then try to query with: ---------------------- $oConnection = new PDO($sDSN); foreach($oConnection->query('SELECT * FROM zTest_TBL ') as $aRow) { print_r($aRow); } ---------------------- returns: ---------------------- Array ( [Test] => [0] => [TestID] => [1] => ) ---------------------- expected: ---------------------- Array ( [Test] => test [0] => test [TestID] => [1] => ) ---------------------- Note: reducing the size to 255 makes it work as expected. it also works as expected if there is just the one field, regardless of the size. adding another field, be it integer or varchar kills the long field. I tested with the 5.1.2 php_pdo.dll and php_pdo_odbc.dll with the same results. ------------------------------------------------------------------------ [2006-02-10 15:18:28] [EMAIL PROTECTED] Assigned to the maintainer. ------------------------------------------------------------------------ [2006-02-09 15:27:59] teissierb at hotmail dot com Description: ------------ On SQL Server 2005 Express (free), using Windows XP, Wamp 1.6.0 (php 5.1.1) and PDO ODBC: With a simple table PDO doesn't return what I expect him to. Might be dued to the mix of varchar and (small, tiny)int. Reproduce code: --------------- create table T ( [A] varchar(80) NOT NULL, [B] tinyint NOT NULL, [C] varchar(100) NOT NULL, [D] smallint NOT NULL, [E] varchar(1024) NOT NULL, [F] varchar(255) NOT NULL, [G] varchar(255) NOT NULL, [H] varchar(1000) NOT NULL, [I] varchar(100) NOT NULL, [J] tinyint NOT NULL, [K] varchar(255) NULL ) insert into T values ('A', '1', 'C', '2', 'E', 'F', 'G', 'H', 'I', '3', 'K') ////////////////////////////////////////////////////////////// try { $db = new PDO('odbc:Driver={SQL Server};Server=HOST\INSTANCENAME;Database=XXXX;', "user", "pass"); } catch( PDOException $e ){ die( $e->getMessage() ); } foreach( $db->query("SELECT * FROM T ", PDO::FETCH_NUM) as $row ) { echo "<pre>"; print_r( $row );echo "</pre>"; } Expected result: ---------------- [0] => A [1] => 1 [2] => C [3] => 2 [4] => E [5] => F [6] => G [7] => H [8] => I [9] => 3 [10] => K Actual result: -------------- [0] => A [1] => 1 [2] => C [3] => 2 [4] => [5] => F [6] => G [7] => [8] => I [9] => 3 [10] => K ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=36342&edit=1