@@ -1450,6 +1450,9 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
1450
1450
} else if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1451
1451
ZVAL_NULL (& tmp );
1452
1452
break ;
1453
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1454
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1455
+ ZVAL_FALSE (& tmp );
1453
1456
} else {
1454
1457
ZVAL_STRINGL (& tmp , buf , result -> values [i ].vallen );
1455
1458
}
@@ -1459,6 +1462,10 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
1459
1462
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1460
1463
ZVAL_NULL (& tmp );
1461
1464
break ;
1465
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1466
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1467
+ ZVAL_FALSE (& tmp );
1468
+ break ;
1462
1469
}
1463
1470
ZVAL_STRINGL (& tmp , result -> values [i ].value , result -> values [i ].vallen );
1464
1471
break ;
@@ -1605,6 +1612,9 @@ PHP_FUNCTION(odbc_fetch_into)
1605
1612
} else if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1606
1613
ZVAL_NULL (& tmp );
1607
1614
break ;
1615
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1616
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1617
+ ZVAL_FALSE (& tmp );
1608
1618
} else {
1609
1619
ZVAL_STRINGL (& tmp , buf , result -> values [i ].vallen );
1610
1620
}
@@ -1614,6 +1624,10 @@ PHP_FUNCTION(odbc_fetch_into)
1614
1624
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
1615
1625
ZVAL_NULL (& tmp );
1616
1626
break ;
1627
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
1628
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , i + 1 , rc );
1629
+ ZVAL_FALSE (& tmp );
1630
+ break ;
1617
1631
}
1618
1632
ZVAL_STRINGL (& tmp , result -> values [i ].value , result -> values [i ].vallen );
1619
1633
break ;
@@ -1844,6 +1858,10 @@ PHP_FUNCTION(odbc_result)
1844
1858
} else if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
1845
1859
zend_string_efree (field_str );
1846
1860
RETURN_NULL ();
1861
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
1862
+ zend_string_efree (field_str );
1863
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
1864
+ RETURN_FALSE ;
1847
1865
}
1848
1866
/* Reduce fieldlen by 1 if we have char data. One day we might
1849
1867
have binary strings... */
@@ -1867,6 +1885,9 @@ PHP_FUNCTION(odbc_result)
1867
1885
default :
1868
1886
if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
1869
1887
RETURN_NULL ();
1888
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
1889
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
1890
+ RETURN_FALSE ;
1870
1891
} else {
1871
1892
RETURN_STRINGL (result -> values [field_ind ].value , result -> values [field_ind ].vallen );
1872
1893
}
@@ -1898,6 +1919,10 @@ PHP_FUNCTION(odbc_result)
1898
1919
if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
1899
1920
efree (field );
1900
1921
RETURN_NULL ();
1922
+ } else if (result -> values [field_ind ].vallen == SQL_NO_TOTAL ) {
1923
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%d (driver cannot determine length)" , field_ind + 1 , rc );
1924
+ efree (field );
1925
+ RETURN_FALSE ;
1901
1926
}
1902
1927
/* chop the trailing \0 by outputting only 4095 bytes */
1903
1928
PHPWRITE (field ,(rc == SQL_SUCCESS_WITH_INFO ) ? 4095 : result -> values [field_ind ].vallen );
@@ -2005,7 +2030,14 @@ PHP_FUNCTION(odbc_result_all)
2005
2030
RETURN_FALSE ;
2006
2031
}
2007
2032
if (rc == SQL_SUCCESS_WITH_INFO ) {
2008
- PHPWRITE (buf , result -> longreadlen );
2033
+ if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
2034
+ php_printf ("</td></tr></table>" );
2035
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (driver cannot determine length)" , i + 1 , rc );
2036
+ efree (buf );
2037
+ RETURN_FALSE ;
2038
+ } else {
2039
+ PHPWRITE (buf , result -> longreadlen );
2040
+ }
2009
2041
} else if (rc != SQL_SUCCESS ) {
2010
2042
php_printf ("</td></tr></table>" );
2011
2043
php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (retcode %u)" , i + 1 , rc );
@@ -2022,6 +2054,9 @@ PHP_FUNCTION(odbc_result_all)
2022
2054
default :
2023
2055
if (result -> values [i ].vallen == SQL_NULL_DATA ) {
2024
2056
php_printf ("<td>NULL</td>" );
2057
+ } else if (result -> values [i ].vallen == SQL_NO_TOTAL ) {
2058
+ php_error_docref (NULL , E_WARNING , "Cannot get data of column #%zu (driver cannot determine length)" , i + 1 , rc );
2059
+ php_printf ("<td>FALSE</td>" );
2025
2060
} else {
2026
2061
php_printf ("<td>%s</td>" , result -> values [i ].value );
2027
2062
}
0 commit comments