ID:               23146
 Updated by:       [EMAIL PROTECTED]
 Reported By:      wohlfarth dot m at web dot de
-Status:           Open
+Status:           Feedback
 Bug Type:         ODBC related
 Operating System: Win2k SP2
 PHP Version:      4.3.2-RC
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php4-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-STABLE-latest.zip




Previous Comments:
------------------------------------------------------------------------

[2003-05-26 03:55:10] wohlfarth dot m at web dot de

Supplement...

The error occures by:
"SELECT List(ColumnX) as IDENT from TableA"

you can bypass the problem when doing the following:
"SELECT cast(List(Column) as varchar(1000)) as IDENT from TableA"

Samplecode:
<?php

echo "Connect to database...";

$iddb = odbc_connect('db1','user1','user1');
echo "OK<br>";

if ( $iddb == 0 ) {
   echo "Error: Cannot connect to database.";
   exit;
};

$sqlqry = "select List(ColumnA) as ColumnX from TableA";

echo "<hr>$sqlqry<br>";

$idresult = odbc_exec($iddb, $sqlqry);

$qryeof = odbc_fetch_row($idresult);
if ( !$qryeof ) {
    echo "no result";
} else {
    echo "Version 1 / Result 1: " . odbc_result($idresult, "ColumnX") .
"<br><br>";
    echo "Version 1 / Result 2: " . odbc_result($idresult, "ColumnX") .
"<br><br>";
};

$sqlqry = "select cast(List(ColumnA) as varchar(1000)) as ColumnX from
TableA";

echo "<hr>$sqlqry<br>";

$idresult = odbc_exec($iddb, $sqlqry);

$qryeof = odbc_fetch_row($idresult);
if ( !$qryeof ) {
    echo "no result";
} else {
    echo "Version 2 / Result 1: " . odbc_result($idresult, "ColumnX") .
"<br><br>";
    echo "Version 2 / Result 2: " . odbc_result($idresult, "ColumnX") .
"<br><br>";
};

odbc_close($iddb);

?>

Result of Samplecode:
Connect to database...OK

------------------------------------------------------------
select List(ColumnA) as ColumnX from TableA
Version 1 / Result 1: res1,res2,res3

Version 1 / Result 2: 


------------------------------------------------------------
select cast(List(ColumnA) as VarChar(1000)) as ColumnX from TableA
Version 2 / Result 1: res1,res2,res3

Version 2 / Result 2: res1,res2,res3

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

[2003-05-26 03:15:36] wohlfarth dot m at web dot de

Please apology for the long waiting period...

Right !

I learned in the meantime that this can be produced in different ways.
I could cause the effect with List(ColumnX) and with a Subquery as
column. I suppose the error occurs, when the fieldtype is not defined
by a field from a table of the database.

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

[2003-04-24 07:41:01] [EMAIL PROTECTED]

Just to make sure, this is using the example you've posted above, not
some deviation, right?

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

[2003-04-24 03:22:07] wohlfarth dot m at web dot de

Complete Logfile is very long, here is the part of interest:

                750-b24 ENTER SQLGetData 
                HSTMT               00EC1DB0
                UWORD                        9 
                SWORD                        1 <SQL_C_CHAR>
                PTR                 0x053E8620 
                SQLLEN                  4096
                SQLLEN *            0x0595C5E4

                750-b24 EXIT  SQLGetData  with return code 0
(SQL_SUCCESS)
                HSTMT               00EC1DB0
                UWORD                        9 
                SWORD                        1 <SQL_C_CHAR>
                PTR                 0x053E8620 [      11] "521 (70074)" --> first
odbc_result here
                SQLLEN                  4096
                SQLLEN *            0x0595C5E4 (11)

                750-b24 ENTER SQLGetData 
                HSTMT               00EC1DB0
                UWORD                        9 
                SWORD                        1 <SQL_C_CHAR>
                PTR                 0x053E9638 
                SQLLEN                  4096
                SQLLEN *            0x0595C5E4

                750-b24 EXIT  SQLGetData  with return code 100
(SQL_NO_DATA_FOUND) --> ERROR here ???
                HSTMT               00EC1DB0
                UWORD                        9 
                SWORD                        1 <SQL_C_CHAR>
                PTR                 0x053E9638 
                SQLLEN                  4096
                SQLLEN *            0x0595C5E4

                750-b24 ENTER SQLExtendedFetch 
                HSTMT               00EC1DB0
                UWORD                        1 <SQL_FETCH_NEXT>
                SQLROWOFFSET               1
                SQLROWSETSIZE *     0x0520F318
                UWORD *             0x0520F320

                750-b24 EXIT  SQLExtendedFetch  with return code 0
(SQL_SUCCESS)
                HSTMT               00EC1DB0
                UWORD                        1 <SQL_FETCH_NEXT>
                SQLROWOFFSET               1
                SQLROWSETSIZE *     0x0520F318 (1)
                UWORD *             0x0520F320 (0)

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

[2003-04-23 11:10:21] [EMAIL PROTECTED]

Don't mind sniper, he's a little over-zealous with the bogus-ification.
 You're correct though that SELECT DISTINCT does create problems with
the ODBC system at the moment.  I haven't yet been able to figure out
why.

Any chance you can create a log of the SQL transactions (SQL Log option
on your ODBC Administrator) and post it here?

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

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/23146

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

Reply via email to