diff options
| author | Ilia Alshanetsky <iliaa@php.net> | 2003-05-30 14:44:15 +0000 |
|---|---|---|
| committer | Ilia Alshanetsky <iliaa@php.net> | 2003-05-30 14:44:15 +0000 |
| commit | ded4aadde0a64911e06e5256a5e72e06d099567f (patch) | |
| tree | 66f315283d929ad4153d30c6008e136b32af283a | |
| parent | 209bba391b6887fdc23f314807f9ee5978d3c752 (diff) | |
| download | php-git-ded4aadde0a64911e06e5256a5e72e06d099567f.tar.gz | |
Fixed bug #23898 (Proper handling of NULLs in odbc_result, odbc_fetch_into
and odbc_result_all)
| -rw-r--r-- | ext/odbc/php_odbc.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index ead26659c2..9c149ef0e4 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -1438,7 +1438,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) if (rc == SQL_SUCCESS_WITH_INFO) { Z_STRLEN_P(tmp) = result->longreadlen; } else if (result->values[i].vallen == SQL_NULL_DATA) { - Z_STRVAL_P(tmp) = empty_string; + ZVAL_NULL(tmp); break; } else { Z_STRLEN_P(tmp) = result->values[i].vallen; @@ -1448,7 +1448,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) default: if (result->values[i].vallen == SQL_NULL_DATA) { - Z_STRVAL_P(tmp) = empty_string; + ZVAL_NULL(tmp); break; } Z_STRLEN_P(tmp) = result->values[i].vallen; @@ -1820,7 +1820,10 @@ PHP_FUNCTION(odbc_result) RETURN_FALSE; } - if (result->values[field_ind].vallen == SQL_NULL_DATA || rc == SQL_NO_DATA_FOUND) { + if (result->values[field_ind].vallen == SQL_NULL_DATA) { + efree(field); + RETURN_NULL(); + } else if (rc == SQL_NO_DATA_FOUND) { efree(field); RETURN_FALSE; } @@ -1836,7 +1839,7 @@ PHP_FUNCTION(odbc_result) default: if (result->values[field_ind].vallen == SQL_NULL_DATA) { - RETURN_FALSE; + RETURN_NULL(); } else { RETURN_STRINGL(result->values[field_ind].value, result->values[field_ind].vallen, 1); } @@ -1862,7 +1865,7 @@ PHP_FUNCTION(odbc_result) if (result->values[field_ind].vallen == SQL_NULL_DATA) { efree(field); - RETURN_FALSE; + RETURN_NULL(); } /* chop the trailing \0 by outputing only 4095 bytes */ PHPWRITE(field,(rc == SQL_SUCCESS_WITH_INFO) ? 4095 : @@ -1969,7 +1972,7 @@ PHP_FUNCTION(odbc_result_all) if (rc == SQL_SUCCESS_WITH_INFO) php_printf(buf,result->longreadlen); else if (result->values[i].vallen == SQL_NULL_DATA) { - php_printf(" </td>"); + php_printf("<td>NULL</td>"); break; } else { php_printf(buf, result->values[i].vallen); @@ -1978,7 +1981,7 @@ PHP_FUNCTION(odbc_result_all) break; default: if (result->values[i].vallen == SQL_NULL_DATA) { - php_printf("<td> </td>"); + php_printf("<td>NULL</td>"); } else { php_printf("<td>%s</td>", result->values[i].value); } |
