@@ -1450,6 +1450,9 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
14501450 } else if (result -> values [i ].vallen == SQL_NULL_DATA ) {
14511451 ZVAL_NULL (& tmp );
14521452 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 );
14531456 } else {
14541457 ZVAL_STRINGL (& tmp , buf , result -> values [i ].vallen );
14551458 }
@@ -1459,6 +1462,10 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
14591462 if (result -> values [i ].vallen == SQL_NULL_DATA ) {
14601463 ZVAL_NULL (& tmp );
14611464 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 ;
14621469 }
14631470 ZVAL_STRINGL (& tmp , result -> values [i ].value , result -> values [i ].vallen );
14641471 break ;
@@ -1605,6 +1612,9 @@ PHP_FUNCTION(odbc_fetch_into)
16051612 } else if (result -> values [i ].vallen == SQL_NULL_DATA ) {
16061613 ZVAL_NULL (& tmp );
16071614 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 );
16081618 } else {
16091619 ZVAL_STRINGL (& tmp , buf , result -> values [i ].vallen );
16101620 }
@@ -1614,6 +1624,10 @@ PHP_FUNCTION(odbc_fetch_into)
16141624 if (result -> values [i ].vallen == SQL_NULL_DATA ) {
16151625 ZVAL_NULL (& tmp );
16161626 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 ;
16171631 }
16181632 ZVAL_STRINGL (& tmp , result -> values [i ].value , result -> values [i ].vallen );
16191633 break ;
@@ -1844,6 +1858,10 @@ PHP_FUNCTION(odbc_result)
18441858 } else if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
18451859 zend_string_efree (field_str );
18461860 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 ;
18471865 }
18481866 /* Reduce fieldlen by 1 if we have char data. One day we might
18491867 have binary strings... */
@@ -1867,6 +1885,9 @@ PHP_FUNCTION(odbc_result)
18671885 default :
18681886 if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
18691887 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 ;
18701891 } else {
18711892 RETURN_STRINGL (result -> values [field_ind ].value , result -> values [field_ind ].vallen );
18721893 }
@@ -1898,6 +1919,10 @@ PHP_FUNCTION(odbc_result)
18981919 if (result -> values [field_ind ].vallen == SQL_NULL_DATA ) {
18991920 efree (field );
19001921 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 ;
19011926 }
19021927 /* chop the trailing \0 by outputting only 4095 bytes */
19031928 PHPWRITE (field ,(rc == SQL_SUCCESS_WITH_INFO ) ? 4095 : result -> values [field_ind ].vallen );
@@ -2005,7 +2030,14 @@ PHP_FUNCTION(odbc_result_all)
20052030 RETURN_FALSE ;
20062031 }
20072032 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+ }
20092041 } else if (rc != SQL_SUCCESS ) {
20102042 php_printf ("</td></tr></table>" );
20112043 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)
20222054 default :
20232055 if (result -> values [i ].vallen == SQL_NULL_DATA ) {
20242056 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>" );
20252060 } else {
20262061 php_printf ("<td>%s</td>" , result -> values [i ].value );
20272062 }
0 commit comments