Bug #69474 [Ver->Fbk]: ODBC: Query with same field name from two tables returns incorrect result
Edit report at https://bugs.php.net/bug.php?id=69474&edit=1
ID: 69474
Updated by: ab@php.net
Reported by: heinrich dot moser dot jun at moware dot at
Summary: ODBC: Query with same field name from two tables
returns incorrect result
-Status: Verified
+Status: Feedback
Type: Bug
Package: ODBC related
Operating System: Windows Server 2012 R2
PHP Version: 5.5.24
Assigned To: ab
Block user comment: N
Private report: N
New Comment:
Please check this snapshot (or any later) http://windows.php.net/downloads/snaps/php-5.5/re09febb/
Thanks for triaging.
Previous Comments:
------------------------------------------------------------------------
[2015-04-17 14:07:35] cmb@php.net
Verified with MS Access Driver (6.01.7601.17632). According to the
ODBC trace[1] the driver doesn't recognize
SQL_DESC_BASE_COLUMN_NAME in the SQLColAttribute() calls. The issue
seems to have been introduced in commit #899362d[2]. Anatol, can
you please have a look.
[1] <https://gist.github.com/cmb69/37147767adf0514674ee>
[2] <https://github.com/php/php-src/commit/899362db6ed3131ff96f07e2d2b7f77c76ce9c40>
------------------------------------------------------------------------
[2015-04-17 11:17:00] heinrich dot moser dot jun at moware dot at
Changed package from PDO ODBC to Database functions/ODBC related. Sorry for the initial
miscategorization.
------------------------------------------------------------------------
[2015-04-17 10:05:19] heinrich dot moser dot jun at moware dot at
Description:
------------
An ODBC query which created a correct result with PHP 5.5.23 produces an incorrect result with PHP
5.5.24. Tested on Windows Server 2012 R2 with SQL Server 2012.
How to reproduce:
1. Create an empty database and create the table with the test script given.
2. Create a system DSN called "forum" which connects to the database.
3. Execute the test script given with PHP 5.5.23 and 5.5.24 and compare the results.
Test script:
---------------
Database:
CREATE TABLE table1 (topic_id int);
CREATE TABLE table2 (topic_id int);
INSERT INTO table1 (topic_id) VALUES (1023);
Code:
<?php
date_default_timezone_set('Europe/Vienna');
$link = odbc_connect("forum", "", "");
$sql =
"SELECT table1.topic_id, table2.topic_id AS X
FROM table1 LEFT JOIN table2 ON table1.topic_id = table2.topic_id
WHERE table1.topic_id = 1023";
$result = odbc_exec($link, $sql);
$topic_data = odbc_fetch_array($result);
var_dump($topic_data);
odbc_free_result($result);
odbc_close($link);
?>
Expected result:
----------------
This is the script output I get with PHP 5.5.23:
array(2) {
["topic_id"]=>
string(4) "1023"
["X"]=>
NULL
}
Actual result:
--------------
This is the script output I get with PHP 5.5.24:
array(1) {
["topic_id"]=>
NULL
}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=69474&edit=1
Thread (7 messages)