mirror of
https://github.com/php/php-src.git
synced 2024-11-24 18:34:21 +08:00
Added pg_fetch_all_columns() function to fetch all values of a column from
a result cursor.
This commit is contained in:
parent
71d28a82cf
commit
ef7bd06657
2
NEWS
2
NEWS
@ -5,6 +5,8 @@ PHP NEWS
|
||||
- Added PDO_MYSQL_ATTR_USE_BUFFERED_QUERY parameter for pdo_mysql. (Ilia)
|
||||
- Added date_timezone_set() function to set the timezone that the date
|
||||
functions will use. (Derick)
|
||||
- Added pg_fetch_all_columns() function to fetch all values of a column from
|
||||
a result cursor. (Ilia)
|
||||
- Implemented feature request #33452 (Year belonging to ISO week). (Derick)
|
||||
- Fixed support for shared extensions on AIX. (Dmitry)
|
||||
- Fixed memory corruption in pg_copy_from() in case the as_null parameter was
|
||||
|
@ -127,6 +127,7 @@ function_entry pgsql_functions[] = {
|
||||
PHP_FE(pg_fetch_array, NULL)
|
||||
PHP_FE(pg_fetch_object, NULL)
|
||||
PHP_FE(pg_fetch_all, NULL)
|
||||
PHP_FE(pg_fetch_all_columns, NULL)
|
||||
#if HAVE_PQCMDTUPLES
|
||||
PHP_FE(pg_affected_rows,NULL)
|
||||
#endif
|
||||
@ -2101,6 +2102,47 @@ PHP_FUNCTION(pg_fetch_all)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto array pg_fetch_all_columns(resource result [, int column_number])
|
||||
Fetch all rows into array */
|
||||
PHP_FUNCTION(pg_fetch_all_columns)
|
||||
{
|
||||
zval *result;
|
||||
PGresult *pgsql_result;
|
||||
pgsql_result_handle *pg_result;
|
||||
long colno=0;
|
||||
int pg_numrows, pg_row;
|
||||
size_t num_fields;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &result, &colno) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
ZEND_FETCH_RESOURCE(pg_result, pgsql_result_handle *, &result, -1, "PostgreSQL result", le_result);
|
||||
|
||||
pgsql_result = pg_result->result;
|
||||
|
||||
num_fields = PQnfields(pgsql_result);
|
||||
if (colno >= num_fields || colno < 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid column number '%ld'", colno);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
array_init(return_value);
|
||||
|
||||
if ((pg_numrows = PQntuples(pgsql_result)) <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (pg_row = 0; pg_row < pg_numrows; pg_row++) {
|
||||
if (PQgetisnull(pgsql_result, pg_row, colno)) {
|
||||
add_next_index_null(return_value);
|
||||
} else {
|
||||
add_next_index_string(return_value, PQgetvalue(pgsql_result, pg_row, colno), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool pg_result_seek(resource result, int offset)
|
||||
Set internal row offset */
|
||||
PHP_FUNCTION(pg_result_seek)
|
||||
|
@ -107,6 +107,7 @@ PHP_FUNCTION(pg_fetch_object);
|
||||
PHP_FUNCTION(pg_fetch_result);
|
||||
PHP_FUNCTION(pg_fetch_row);
|
||||
PHP_FUNCTION(pg_fetch_all);
|
||||
PHP_FUNCTION(pg_fetch_all_columns);
|
||||
#if HAVE_PQCMDTUPLES
|
||||
PHP_FUNCTION(pg_affected_rows);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user