@@ -1447,6 +1447,9 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
1447
1447
} else if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1448
1448
ZVAL_NULL (& tmp );
1449
1449
break ;
1450
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1451
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1452
+ ZVAL_FALSE (& tmp );
1450
1453
} else {
1451
1454
ZVAL_STRINGL (& tmp , buf , result -> values [i ].vallen );
1452
1455
}
@@ -1456,6 +1459,10 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
1456
1459
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1457
1460
ZVAL_NULL (& tmp );
1458
1461
break ;
1462
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1463
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1464
+ ZVAL_FALSE (& tmp );
1465
+ break ;
1459
1466
}
1460
1467
ZVAL_STRINGL (& tmp , result -> values [i ].value , result -> values [i ].vallen );
1461
1468
break ;
@@ -1600,6 +1607,9 @@ PHP_FUNCTION(odbc_fetch_into)
1600
1607
} else if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1601
1608
ZVAL_NULL (& tmp );
1602
1609
break ;
1610
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1611
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1612
+ ZVAL_FALSE (& tmp );
1603
1613
} else {
1604
1614
ZVAL_STRINGL (& tmp , buf , result -> values [i ].vallen );
1605
1615
}
@@ -1609,6 +1619,10 @@ PHP_FUNCTION(odbc_fetch_into)
1609
1619
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1610
1620
ZVAL_NULL (& tmp );
1611
1621
break ;
1622
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1623
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1624
+ ZVAL_FALSE (& tmp );
1625
+ break ;
1612
1626
}
1613
1627
ZVAL_STRINGL (& tmp , result -> values [i ].value , result -> values [i ].vallen );
1614
1628
break ;
@@ -1836,6 +1850,10 @@ PHP_FUNCTION(odbc_result)
1836
1850
} else if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
1837
1851
zend_string_efree (field_str );
1838
1852
RETURN_NULL ();
1853
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
1854
+ zend_string_efree (field_str );
1855
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
1856
+ RETURN_FALSE ;
1839
1857
}
1840
1858
/* Reduce fieldlen by 1 if we have char data. One day we might
1841
1859
have binary strings... */
@@ -1859,6 +1877,9 @@ PHP_FUNCTION(odbc_result)
1859
1877
default :
1860
1878
if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
1861
1879
RETURN_NULL ();
1880
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
1881
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
1882
+ RETURN_FALSE ;
1862
1883
} else {
1863
1884
RETURN_STRINGL (result -> values [field_ind ].value , result -> values [field_ind ].vallen );
1864
1885
}
@@ -1890,6 +1911,10 @@ PHP_FUNCTION(odbc_result)
1890
1911
if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
1891
1912
efree (field );
1892
1913
RETURN_NULL ();
1914
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
1915
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
1916
+ efree (field );
1917
+ RETURN_FALSE ;
1893
1918
}
1894
1919
/* chop the trailing \0 by outputting only 4095 bytes */
1895
1920
PHPWRITE (field ,(rc == SQL_SUCCESS_WITH_INFO ) ? 4095 : result -> values [field_ind ].vallen );
@@ -1994,7 +2019,14 @@ PHP_FUNCTION(odbc_result_all)
1994
2019
RETURN_FALSE ;
1995
2020
}
1996
2021
if (rc == SQL_SUCCESS_WITH_INFO ) {
1997
- PHPWRITE (buf , result -> longreadlen );
2022
+ if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
2023
+ php_printf ("</td></tr></table>" );
2024
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (driver cannot determine length)" , i + 1 , rc );
2025
+ efree (buf );
2026
+ RETURN_FALSE ;
2027
+ } else {
2028
+ PHPWRITE (buf , result -> longreadlen );
2029
+ }
1998
2030
} else if (rc != SQL_SUCCESS ) {
1999
2031
php_printf ("</td></tr></table>" );
2000
2032
php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (retcode %u)" , i + 1 , rc );
@@ -2011,6 +2043,9 @@ PHP_FUNCTION(odbc_result_all)
2011
2043
default :
2012
2044
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
2013
2045
php_printf ("<td>NULL</td>" );
2046
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
2047
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (driver cannot determine length)" , i + 1 , rc );
2048
+ php_printf ("<td>FALSE</td>" );
2014
2049
} else {
2015
2050
php_printf ("<td>%s</td>" , result -> values [i ].value );
2016
2051
}
0 commit comments