@@ -1814,6 +1814,9 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
1814
1814
} else if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1815
1815
ZVAL_NULL (& tmp );
1816
1816
break ;
1817
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1818
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1819
+ ZVAL_FALSE (& tmp );
1817
1820
} else {
1818
1821
ZVAL_STRINGL (& tmp , buf , result -> values [i ].vallen );
1819
1822
}
@@ -1823,6 +1826,10 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
1823
1826
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1824
1827
ZVAL_NULL (& tmp );
1825
1828
break ;
1829
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1830
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1831
+ ZVAL_FALSE (& tmp );
1832
+ break ;
1826
1833
}
1827
1834
ZVAL_STRINGL (& tmp , result -> values [i ].value , result -> values [i ].vallen );
1828
1835
break ;
@@ -1970,6 +1977,9 @@ PHP_FUNCTION(odbc_fetch_into)
1970
1977
} else if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1971
1978
ZVAL_NULL (& tmp );
1972
1979
break ;
1980
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1981
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1982
+ ZVAL_FALSE (& tmp );
1973
1983
} else {
1974
1984
ZVAL_STRINGL (& tmp , buf , result -> values [i ].vallen );
1975
1985
}
@@ -1979,6 +1989,10 @@ PHP_FUNCTION(odbc_fetch_into)
1979
1989
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1980
1990
ZVAL_NULL (& tmp );
1981
1991
break ;
1992
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1993
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1994
+ ZVAL_FALSE (& tmp );
1995
+ break ;
1982
1996
}
1983
1997
ZVAL_STRINGL (& tmp , result -> values [i ].value , result -> values [i ].vallen );
1984
1998
break ;
@@ -2211,6 +2225,10 @@ PHP_FUNCTION(odbc_result)
2211
2225
} else if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
2212
2226
zend_string_efree (field_str );
2213
2227
RETURN_NULL ();
2228
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
2229
+ zend_string_efree (field_str );
2230
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
2231
+ RETURN_FALSE ;
2214
2232
}
2215
2233
/* Reduce fieldlen by 1 if we have char data. One day we might
2216
2234
have binary strings... */
@@ -2234,6 +2252,9 @@ PHP_FUNCTION(odbc_result)
2234
2252
default :
2235
2253
if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
2236
2254
RETURN_NULL ();
2255
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
2256
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
2257
+ RETURN_FALSE ;
2237
2258
} else {
2238
2259
RETURN_STRINGL (result -> values [field_ind ].value , result -> values [field_ind ].vallen );
2239
2260
}
@@ -2265,6 +2286,10 @@ PHP_FUNCTION(odbc_result)
2265
2286
if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
2266
2287
efree (field );
2267
2288
RETURN_NULL ();
2289
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
2290
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
2291
+ efree (field );
2292
+ RETURN_FALSE ;
2268
2293
}
2269
2294
/* chop the trailing \0 by outputting only 4095 bytes */
2270
2295
PHPWRITE (field ,(rc == SQL_SUCCESS_WITH_INFO ) ? 4095 : result -> values [field_ind ].vallen );
@@ -2370,7 +2395,14 @@ PHP_FUNCTION(odbc_result_all)
2370
2395
RETURN_FALSE ;
2371
2396
}
2372
2397
if (rc == SQL_SUCCESS_WITH_INFO ) {
2373
- PHPWRITE (buf , result -> longreadlen );
2398
+ if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
2399
+ php_printf ("</td></tr></table>" );
2400
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (driver cannot determine length)" , i + 1 , rc );
2401
+ efree (buf );
2402
+ RETURN_FALSE ;
2403
+ } else {
2404
+ PHPWRITE (buf , result -> longreadlen );
2405
+ }
2374
2406
} else if (rc != SQL_SUCCESS ) {
2375
2407
php_printf ("</td></tr></table>" );
2376
2408
php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (retcode %u)" , i + 1 , rc );
@@ -2387,6 +2419,9 @@ PHP_FUNCTION(odbc_result_all)
2387
2419
default :
2388
2420
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
2389
2421
php_printf ("<td>NULL</td>" );
2422
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
2423
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (driver cannot determine length)" , i + 1 , rc );
2424
+ php_printf ("<td>FALSE</td>" );
2390
2425
} else {
2391
2426
php_printf ("<td>%s</td>" , result -> values [i ].value );
2392
2427
}
0 commit comments