Browse Source

Added support for character sets in pg_escape_string() for PostgreSQL

8.1.4 and higher.
PECL_OPENSSL
Ilia Alshanetsky 20 years ago
parent
commit
e8c70bfa99
  1. 2
      NEWS
  2. 1
      ext/pgsql/config.m4
  3. 28
      ext/pgsql/pgsql.c

2
NEWS

@ -3,6 +3,8 @@ PHP NEWS
?? Sep 2006, PHP 5.2.0
- Speedup array/HashTable copying. (Matt W, Dmitry)
- Added ability to make SOAP call userspace PHP<->XML converters. (Dmitry)
- Added support for character sets in pg_escape_string() for PostgreSQL
8.1.4 and higher. (Ilia)
- Fixed infinite loop when a wrong color index is given to imagefill (Pierre)
- Fixed mess with CGI/CLI -d option (now it works with cgi; constants are
working exactly like in php.ini; with FastCGI -d affects all requests).

1
ext/pgsql/config.m4

@ -91,6 +91,7 @@ if test "$PHP_PGSQL" != "no"; then
AC_CHECK_LIB(pq, PQgetCopyData,AC_DEFINE(HAVE_PQGETCOPYDATA,1,[PostgreSQL 7.4 or later]))
AC_CHECK_LIB(pq, PQsetErrorVerbosity,AC_DEFINE(HAVE_PQSETERRORVERBOSITY,1,[PostgreSQL 7.4 or later]))
AC_CHECK_LIB(pq, PQftable,AC_DEFINE(HAVE_PQFTABLE,1,[PostgreSQL 7.4 or later]))
AC_CHECK_LIB(pq, PQescapeStringConn, AC_DEFINE(HAVE_PQESCAPE_CONN,1,[PostgreSQL 8.1 or later]))
AC_CHECK_LIB(pq, pg_encoding_to_char,AC_DEFINE(HAVE_PGSQL_WITH_MULTIBYTE_SUPPORT,1,[Whether libpq is compiled with --enable-multibyte]))
LIBS=$old_LIBS
LDFLAGS=$old_LDFLAGS

28
ext/pgsql/pgsql.c

@ -3547,20 +3547,36 @@ PHP_FUNCTION(pg_copy_from)
/* }}} */
#ifdef HAVE_PQESCAPE
/* {{{ proto string pg_escape_string(string data)
/* {{{ proto string pg_escape_string([resource connection,] string data)
Escape string for text/char type */
PHP_FUNCTION(pg_escape_string)
{
char *from = NULL, *to = NULL;
zval *pgsql_link;
PGconn *pgsql;
int to_len;
int from_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
&from, &from_len) == FAILURE) {
return;
int id;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "rs", &pgsql_link, &from, &from_len) == SUCCESS) {
id = -1;
} else if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &from, &from_len) == SUCCESS) {
pgsql_link = NULL;
id = PGG(default_link);
} else {
WRONG_PARAM_COUNT;
}
to = (char *)safe_emalloc(from_len, 2, 1);
to_len = (int)PQescapeString(to, from, from_len);
to = (char *) safe_emalloc(from_len, 2, 1);
#ifdef HAVE_PQESCAPE_CONN
if (pgsql_link != NULL || id != -1) {
ZEND_FETCH_RESOURCE2(pgsql, PGconn *, &pgsql_link, id, "PostgreSQL link", le_link, le_plink);
to_len = (int) PQescapeStringConn(pgsql, to, from, (size_t)from_len, NULL);
} else
#endif
to_len = (int) PQescapeString(to, from, (size_t)from_len);
RETURN_STRINGL(to, to_len, 0);
}
/* }}} */

Loading…
Cancel
Save