diff options
author | Keyur Govande <keyur@php.net> | 2014-10-07 21:22:07 +0000 |
---|---|---|
committer | Keyur Govande <keyur@php.net> | 2014-10-07 21:22:07 +0000 |
commit | 92f108801e89e4080f8985f0f09f6e7b35397065 (patch) | |
tree | acfeaf75d8e5ae056d36c20561884274da788e19 /ext/odbc | |
parent | 6f634ebb8c72adf36582deb714e2db36ed21194d (diff) | |
parent | d319a0c1d8f02e89e4c455917e7509f2346e2a6c (diff) | |
download | php-git-92f108801e89e4080f8985f0f09f6e7b35397065.tar.gz |
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5:
Add to NEWS
Fix for bug #68087 (ODBC not reading DATE columns correctly)
Diffstat (limited to 'ext/odbc')
-rw-r--r-- | ext/odbc/php_odbc.c | 5 | ||||
-rw-r--r-- | ext/odbc/tests/bug68087.phpt | 57 |
2 files changed, 60 insertions, 2 deletions
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 19f9fe4eb0..b9bee9676a 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -951,14 +951,15 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) SQLUSMALLINT colfieldid; int charextraalloc; - colfieldid = SQL_COLUMN_DISPLAY_SIZE; - charextraalloc = 0; result->values = (odbc_result_value *) safe_emalloc(sizeof(odbc_result_value), result->numcols, 0); result->longreadlen = ODBCG(defaultlrl); result->binmode = ODBCG(defaultbinmode); for(i = 0; i < result->numcols; i++) { + charextraalloc = 0; + colfieldid = SQL_COLUMN_DISPLAY_SIZE; + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_NAME, result->values[i].name, sizeof(result->values[i].name), &colnamelen, 0); rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_TYPE, diff --git a/ext/odbc/tests/bug68087.phpt b/ext/odbc/tests/bug68087.phpt new file mode 100644 index 0000000000..3bc18125a6 --- /dev/null +++ b/ext/odbc/tests/bug68087.phpt @@ -0,0 +1,57 @@ +--TEST-- +odbc_exec(): Getting accurate date data from query +--SKIPIF-- +<?php include 'skipif.inc'; ?> +--FILE-- +<?php + +include 'config.inc'; + +$id_1_date = '2014-09-23'; +$id_2_date = '2014-09-24'; + +$conn = odbc_connect($dsn, $user, $pass); + +@odbc_exec($conn, 'CREATE DATABASE odbcTEST'); + +odbc_exec($conn, 'CREATE TABLE FOO (ID INT, VARCHAR_COL VARCHAR(100), DATE_COL DATE)'); + +odbc_exec($conn, "INSERT INTO FOO(ID, VARCHAR_COL, DATE_COL) VALUES (1, 'hello', '$id_1_date')"); +odbc_exec($conn, "INSERT INTO FOO(ID, VARCHAR_COL, DATE_COL) VALUES (2, 'helloagain', '$id_2_date')"); + +$res = odbc_exec($conn, 'SELECT * FROM FOO ORDER BY ID ASC'); + +while(odbc_fetch_row($res)) { + $id = odbc_result($res, "ID"); + $varchar_col = odbc_result($res, "VARCHAR_COL"); + $date = odbc_result($res, "DATE_COL"); + + if ($id == 1) { + if ($date != $id_1_date) { + print "Date_1 mismatched\n"; + } else { + print "Date_1 matched\n"; + } + } else { + if ($date != $id_2_date) { + print "Date_2 mismatched\n"; + } else { + print "Date_2 matched\n"; + } + } +} + +?> +--EXPECT-- +Date_1 matched +Date_2 matched +--CLEAN-- +<?php +include 'config.inc'; + +$conn = odbc_connect($dsn, $user, $pass); + +odbc_exec($conn, 'DROP TABLE FOO'); +odbc_exec($conn, 'DROP DATABASE odbcTEST'); + +?> |