iliaa Thu Jul 7 20:40:33 2005 EDT
Modified files:
/php-src NEWS
/php-src/ext/pgsql pgsql.c php_pgsql.h
Log:
Added pg_fetch_all_columns() function to fetch all values of a column from
a result cursor.
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1987&r2=1.1988&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1987 php-src/NEWS:1.1988
--- php-src/NEWS:1.1987 Thu Jul 7 12:07:08 2005
+++ php-src/NEWS Thu Jul 7 20:40:32 2005
@@ -5,6 +5,8 @@
- 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
http://cvs.php.net/diff.php/php-src/ext/pgsql/pgsql.c?r1=1.329&r2=1.330&ty=u
Index: php-src/ext/pgsql/pgsql.c
diff -u php-src/ext/pgsql/pgsql.c:1.329 php-src/ext/pgsql/pgsql.c:1.330
--- php-src/ext/pgsql/pgsql.c:1.329 Tue Jul 5 10:49:22 2005
+++ php-src/ext/pgsql/pgsql.c Thu Jul 7 20:40:32 2005
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c,v 1.329 2005/07/05 14:49:22 edink Exp $ */
+/* $Id: pgsql.c,v 1.330 2005/07/08 00:40:32 iliaa Exp $ */
#include <stdlib.h>
@@ -127,6 +127,7 @@
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 @@
}
/* }}} */
+/* {{{ 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)
http://cvs.php.net/diff.php/php-src/ext/pgsql/php_pgsql.h?r1=1.71&r2=1.72&ty=u
Index: php-src/ext/pgsql/php_pgsql.h
diff -u php-src/ext/pgsql/php_pgsql.h:1.71 php-src/ext/pgsql/php_pgsql.h:1.72
--- php-src/ext/pgsql/php_pgsql.h:1.71 Wed Apr 13 17:48:33 2005
+++ php-src/ext/pgsql/php_pgsql.h Thu Jul 7 20:40:32 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pgsql.h,v 1.71 2005/04/13 21:48:33 derick Exp $ */
+/* $Id: php_pgsql.h,v 1.72 2005/07/08 00:40:32 iliaa Exp $ */
#ifndef PHP_PGSQL_H
#define PHP_PGSQL_H
@@ -107,6 +107,7 @@
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