georg           Sun Nov 19 12:10:19 2006 UTC

  Modified files:              
    /php-src/ext/mysql  php_mysql.c 
  Log:
  added unicode support for ext/mysql
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/php_mysql.c?r1=1.226&r2=1.227&diff_format=u
Index: php-src/ext/mysql/php_mysql.c
diff -u php-src/ext/mysql/php_mysql.c:1.226 php-src/ext/mysql/php_mysql.c:1.227
--- php-src/ext/mysql/php_mysql.c:1.226 Sun Oct  8 13:34:22 2006
+++ php-src/ext/mysql/php_mysql.c       Sun Nov 19 12:10:19 2006
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
  
-/* $Id: php_mysql.c,v 1.226 2006/10/08 13:34:22 bjori Exp $ */
+/* $Id: php_mysql.c,v 1.227 2006/11/19 12:10:19 georg Exp $ */
 
 /* TODO:
  *
@@ -473,6 +473,7 @@
 static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 {
        char *user=NULL, *passwd=NULL, *host_and_port=NULL, *socket=NULL, 
*tmp=NULL, *host=NULL;
+       int  user_len, passwd_len, host_len;
        char *hashed_details=NULL;
        int hashed_details_length, port = MYSQL_PORT;
        int client_flags = 0;
@@ -480,7 +481,6 @@
 #if MYSQL_VERSION_ID <= 32230
        void (*handler) (int);
 #endif
-       zval **z_host=NULL, **z_user=NULL, **z_passwd=NULL, **z_new_link=NULL, 
**z_client_flags=NULL;
        zend_bool free_host=0, new_link=0;
        long connect_timeout;
 
@@ -521,95 +521,22 @@
                user = MySG(default_user);
                passwd = MySG(default_password);
                
-               switch(ZEND_NUM_ARGS()) {
-                       case 0: /* defaults */
-                               break;
-                       case 1: {                                       
-                                       if (zend_get_parameters_ex(1, 
&z_host)==FAILURE) {
-                                               MYSQL_DO_CONNECT_RETURN_FALSE();
-                                       }
-                               }
-                               break;
-                       case 2: {
-                                       if (zend_get_parameters_ex(2, &z_host, 
&z_user)==FAILURE) {
-                                               MYSQL_DO_CONNECT_RETURN_FALSE();
-                                       }
-                                       convert_to_string_ex(z_user);
-                                       user = Z_STRVAL_PP(z_user);
-                               }
-                               break;
-                       case 3: {
-                                       if (zend_get_parameters_ex(3, &z_host, 
&z_user, &z_passwd) == FAILURE) {
-                                               MYSQL_DO_CONNECT_RETURN_FALSE();
-                                       }
-                                       convert_to_string_ex(z_user);
-                                       convert_to_string_ex(z_passwd);
-                                       user = Z_STRVAL_PP(z_user);
-                                       passwd = Z_STRVAL_PP(z_passwd);
-                               }
-                               break;
-                       case 4: {
-                                       if (!persistent) {
-                                               if (zend_get_parameters_ex(4, 
&z_host, &z_user, &z_passwd, &z_new_link) == FAILURE) {
-                                                       
MYSQL_DO_CONNECT_RETURN_FALSE();
-                                               }
-                                               convert_to_string_ex(z_user);
-                                               convert_to_string_ex(z_passwd);
-                                               
convert_to_boolean_ex(z_new_link);
-                                               user = Z_STRVAL_PP(z_user);
-                                               passwd = Z_STRVAL_PP(z_passwd);
-                                               new_link = 
Z_BVAL_PP(z_new_link);
-                                       }
-                                       else {
-                                               if (zend_get_parameters_ex(4, 
&z_host, &z_user, &z_passwd, &z_client_flags) == FAILURE) {
-                                                       
MYSQL_DO_CONNECT_RETURN_FALSE();
-                                               }
-                                               convert_to_string_ex(z_user);
-                                               convert_to_string_ex(z_passwd);
-                                               
convert_to_long_ex(z_client_flags);
-                                               user = Z_STRVAL_PP(z_user);
-                                               passwd = Z_STRVAL_PP(z_passwd);
-                                               client_flags = 
Z_LVAL_PP(z_client_flags);
-                                       }
-                               }
-                               break;
-                       case 5: {
-                                       if (zend_get_parameters_ex(5, &z_host, 
&z_user, &z_passwd, &z_new_link, &z_client_flags) == FAILURE) {
-                                               MYSQL_DO_CONNECT_RETURN_FALSE();
-                                       }
-                                       convert_to_string_ex(z_user);
-                                       convert_to_string_ex(z_passwd);
-                                       convert_to_boolean_ex(z_new_link);
-                                       convert_to_long_ex(z_client_flags);
-                                       user = Z_STRVAL_PP(z_user);
-                                       passwd = Z_STRVAL_PP(z_passwd);
-                                       new_link = Z_BVAL_PP(z_new_link);
-                                       client_flags = 
Z_LVAL_PP(z_client_flags);
-                               }
-                               break;
-                       default:
-                               WRONG_PARAM_COUNT;
-                               break;
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
"|s&s&s&ll", &host_and_port, &host_len, UG(utf8_conv),
+                                                                       &user, 
&user_len, UG(utf8_conv), &passwd, &passwd_len, UG(utf8_conv),
+                                                                       
&new_link, &client_flags)==FAILURE) {
+                       WRONG_PARAM_COUNT;
+               }
+
+               /* mysql_pconnect does not support new_link parameter */
+               if (persistent) {
+                       client_flags= new_link;
                }
+               
                /* disable local infile option for open_basedir */
                 if (PG(open_basedir) && strlen(PG(open_basedir)) && 
(client_flags & CLIENT_LOCAL_FILES)) {
                        client_flags ^= CLIENT_LOCAL_FILES;
                }
 
-               if (z_host) {
-                       SEPARATE_ZVAL(z_host); /* We may modify z_host if it 
contains a port, separate */
-                       convert_to_string_ex(z_host);
-                       host_and_port = Z_STRVAL_PP(z_host);
-                       if (z_user) {
-                               convert_to_string_ex(z_user);
-                               user = Z_STRVAL_PP(z_user);
-                               if (z_passwd) {
-                                       convert_to_string_ex(z_passwd);
-                                       passwd = Z_STRVAL_PP(z_passwd);
-                               }
-                       }
-               }
-
                hashed_details_length = sizeof("mysql___")-1 + 
strlen(SAFE_STRING(host_and_port))+strlen(SAFE_STRING(user))+strlen(SAFE_STRING(passwd));
                hashed_details = (char *) emalloc(hashed_details_length+1);
                sprintf(hashed_details, "mysql_%s_%s_%s", 
SAFE_STRING(host_and_port), SAFE_STRING(user), SAFE_STRING(passwd));
@@ -618,7 +545,7 @@
        /* We cannot use mysql_port anymore in windows, need to use
         * mysql_real_connect() to set the port.
         */
-       if (host_and_port && (tmp=strchr(host_and_port, ':'))) {
+       if (host_len && (tmp=strchr(host_and_port, ':'))) {
                host = estrndup(host_and_port, tmp-host_and_port);
                free_host = 1;
                tmp++;
@@ -685,6 +612,18 @@
                                MYSQL_DO_CONNECT_RETURN_FALSE();
                        }
 
+                       if (UG(unicode)) {
+#if MYSQL_VERSION_ID > 40112
+                               mysql_set_character_set(&mysql->conn, "utf8");
+#else
+                               char *encoding = (char 
*)mysql_character_set_name(&mysql->conn);
+                               if (strcasecmp(encoding, "utf8")) {
+                                       php_error_docref(NULL TSRMLS_CC, 
E_WARNING, "Can't connect in Unicode mode. Client library was compiled with 
default charset %s", encoding);
+                                       MYSQL_DO_CONNECT_RETURN_FALSE();
+                               }       
+#endif
+                       }
+
                        /* hash it up */
                        Z_TYPE(new_le) = le_plink;
                        new_le.ptr = mysql;
@@ -821,7 +760,7 @@
 }
 /* }}} */
 
-/* {{{ proto resource mysql_connect([string hostname[:port][:/path/to/socket] 
[, string username [, string password [, bool new [, int flags]]]]])
+/* {{{ proto resource mysql_connect([string hostname[:port][:/path/to/socket] 
[, string username [, string password [, bool new [, int flags]]]]]) U
    Opens a connection to a MySQL Server */
 PHP_FUNCTION(mysql_connect)
 {
@@ -829,7 +768,7 @@
 }
 /* }}} */
 
-/* {{{ proto resource mysql_pconnect([string hostname[:port][:/path/to/socket] 
[, string username [, string password [, int flags]]]])
+/* {{{ proto resource mysql_pconnect([string hostname[:port][:/path/to/socket] 
[, string username [, string password [, int flags]]]]) U
    Opens a persistent connection to a MySQL Server */
 PHP_FUNCTION(mysql_pconnect)
 {
@@ -837,7 +776,7 @@
 }
 /* }}} */
 
-/* {{{ proto bool mysql_close([int link_identifier])
+/* {{{ proto bool mysql_close([int link_identifier]) U
    Close a MySQL connection */
 PHP_FUNCTION(mysql_close)
 {
@@ -878,38 +817,27 @@
 }
 /* }}} */
 
-/* {{{ proto bool mysql_select_db(string database_name [, int link_identifier])
+/* {{{ proto bool mysql_select_db(string database_name [, int 
link_identifier]) U
    Selects a MySQL database */
 PHP_FUNCTION(mysql_select_db)
 {
-       zval **db, **mysql_link;
-       int id;
+       zval *mysql_link;
+       char *db;
+       int id=-1, db_len;
        php_mysql_conn *mysql;
        
-       switch(ZEND_NUM_ARGS()) {
-               case 1:
-                       if (zend_get_parameters_ex(1, &db)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-                       CHECK_LINK(id);
-                       break;
-               case 2:
-                       if (zend_get_parameters_ex(2, &db, 
&mysql_link)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = -1;
-                       break;
-               default:
-                       WRONG_PARAM_COUNT;
-                       break;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&|r", &db, 
&db_len, UG(utf8_conv), &mysql_link) == FAILURE) {
+               return;
        }
 
-       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
"MySQL-Link", le_link, le_plink);
-       
-       convert_to_string_ex(db);
+       if (ZEND_NUM_ARGS() == 1) {
+               id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+               CHECK_LINK(id);
+       }
 
-       if (php_mysql_select_db(mysql, Z_STRVAL_PP(db) TSRMLS_CC)) {
+       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, 
"MySQL-Link", le_link, le_plink);
+       
+       if (php_mysql_select_db(mysql, db TSRMLS_CC)) {
                RETURN_TRUE;
        } else {
                RETURN_FALSE;   
@@ -919,25 +847,29 @@
 
 #ifdef HAVE_GETINFO_FUNCS
 
-/* {{{ proto string mysql_get_client_info(void)
+/* {{{ proto string mysql_get_client_info(void) U
    Returns a string that represents the client library version */
 PHP_FUNCTION(mysql_get_client_info)
 {
+       char *info;
+
        if (ZEND_NUM_ARGS() != 0) {
                WRONG_PARAM_COUNT;
        }
 
-       RETURN_STRING((char *)mysql_get_client_info(),1);       
+       info = (char *)mysql_get_client_info(); 
+       RETURN_UTF8_STRING(info, ZSTR_DUPLICATE);
 }
 /* }}} */
 
-/* {{{ proto string mysql_get_host_info([int link_identifier])
+/* {{{ proto string mysql_get_host_info([int link_identifier]) U
    Returns a string describing the type of connection in use, including the 
server host name */
 PHP_FUNCTION(mysql_get_host_info)
 {
        zval **mysql_link;
        int id;
        php_mysql_conn *mysql;
+       char *info;
 
        switch(ZEND_NUM_ARGS()) {
                case 0:
@@ -957,11 +889,12 @@
 
        ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
"MySQL-Link", le_link, le_plink);
 
-       RETURN_STRING((char *)mysql_get_host_info(&mysql->conn),1);
+       info = (char *)mysql_get_host_info(&mysql->conn);
+       RETURN_UTF8_STRING(info, ZSTR_DUPLICATE);
 }
 /* }}} */
 
-/* {{{ proto int mysql_get_proto_info([int link_identifier])
+/* {{{ proto int mysql_get_proto_info([int link_identifier]) U
    Returns the protocol version used by current connection */
 PHP_FUNCTION(mysql_get_proto_info)
 {
@@ -991,7 +924,7 @@
 }
 /* }}} */
 
-/* {{{ proto string mysql_get_server_info([int link_identifier])
+/* {{{ proto string mysql_get_server_info([int link_identifier]) U
    Returns a string that represents the server version number */
 PHP_FUNCTION(mysql_get_server_info)
 {
@@ -1017,11 +950,11 @@
 
        ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
"MySQL-Link", le_link, le_plink);
 
-       RETURN_STRING((char *)mysql_get_server_info(&mysql->conn),1);
+       RETURN_UTF8_STRING((char *)mysql_get_server_info(&mysql->conn), 
ZSTR_DUPLICATE);
 }
 /* }}} */
 
-/* {{{ proto string mysql_info([int link_identifier])
+/* {{{ proto string mysql_info([int link_identifier]) U
    Returns a string containing information about the most recent query */
 PHP_FUNCTION(mysql_info)
 {
@@ -1042,14 +975,14 @@
        ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, 
"MySQL-Link", le_link, le_plink);
 
        if ((str = (char *)mysql_info(&mysql->conn))) {
-               RETURN_STRING(str,1);
+               RETURN_UTF8_STRING(str,ZSTR_DUPLICATE);
        } else {
                RETURN_FALSE;
        }
 }
 /* }}} */
 
-/* {{{ proto int mysql_thread_id([int link_identifier])
+/* {{{ proto int mysql_thread_id([int link_identifier]) U
        Returns the thread id of current connection */
 PHP_FUNCTION(mysql_thread_id)
 {
@@ -1071,7 +1004,7 @@
 }
 /* }}} */
 
-/* {{{ proto string mysql_stat([int link_identifier])
+/* {{{ proto string mysql_stat([int link_identifier]) U
        Returns a string containing status information */
 PHP_FUNCTION(mysql_stat)
 {
@@ -1091,11 +1024,11 @@
 
        PHPMY_UNBUFFERED_QUERY_CHECK();
 
-       RETURN_STRING((char *)mysql_stat(&mysql->conn), 1);
+       RETURN_UTF8_STRING((char *)mysql_stat(&mysql->conn), ZSTR_DUPLICATE);
 }
 /* }}} */
 
-/* {{{ proto string mysql_client_encoding([int link_identifier])
+/* {{{ proto string mysql_client_encoding([int link_identifier]) U
        Returns the default character set for the current connection */
 PHP_FUNCTION(mysql_client_encoding)
 {
@@ -1114,47 +1047,36 @@
 
        ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, 
"MySQL-Link", le_link, le_plink);
 
-       RETURN_STRING((char *)mysql_character_set_name(&mysql->conn), 1);
+       RETURN_UTF8_STRING((char *)mysql_character_set_name(&mysql->conn), 
ZSTR_DUPLICATE);
 }
 /* }}} */
 #endif
 
 #ifndef NETWARE                /* The below two functions not supported on 
NetWare */
 #if MYSQL_VERSION_ID < 40000
-/* {{{ proto bool mysql_create_db(string database_name [, int link_identifier])
+/* {{{ proto bool mysql_create_db(string database_name [, int 
link_identifier]) U
    Create a MySQL database */
 PHP_FUNCTION(mysql_create_db)
 {
-       zval **db, **mysql_link;
-       int id;
+       zval *mysql_link;
+       int id = -1, db_len;
+       char *db;
        php_mysql_conn *mysql;
 
-       switch(ZEND_NUM_ARGS()) {
-               case 1:
-                       if (zend_get_parameters_ex(1, &db)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-                       CHECK_LINK(id);
-                       break;
-               case 2:
-                       if (zend_get_parameters_ex(2, &db, 
&mysql_link)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = -1;
-                       break;
-               default:
-                       WRONG_PARAM_COUNT;
-                       break;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&|r", &db, 
&db_len, UG(utf8_conv), &mysql_link) == FAILURE) {
+               return;
        }
 
-       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
"MySQL-Link", le_link, le_plink);
+       if (ZEND_NUM_ARGS() == 1) {
+               id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+               CHECK_LINK(id);
+       }
 
-       PHPMY_UNBUFFERED_QUERY_CHECK();
+       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, 
"MySQL-Link", le_link, le_plink);
 
-       convert_to_string_ex(db);
+       PHPMY_UNBUFFERED_QUERY_CHECK();
 
-       if (mysql_create_db(&mysql->conn, Z_STRVAL_PP(db))==0) {
+       if (mysql_create_db(&mysql->conn, db)==0) {
                RETURN_TRUE;
        } else {
                RETURN_FALSE;
@@ -1162,38 +1084,27 @@
 }
 /* }}} */
 
-/* {{{ proto bool mysql_drop_db(string database_name [, int link_identifier])
+/* {{{ proto bool mysql_drop_db(string database_name [, int link_identifier]) U
    Drops (delete) a MySQL database */
 PHP_FUNCTION(mysql_drop_db)
 {
-       zval **db, **mysql_link;
-       int id;
+       zval *mysql_link;
+       char *db;
+       int id = -1, db_len;
        php_mysql_conn *mysql;
        
-       switch(ZEND_NUM_ARGS()) {
-               case 1:
-                       if (zend_get_parameters_ex(1, &db)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-                       CHECK_LINK(id);
-                       break;
-               case 2:
-                       if (zend_get_parameters_ex(2, &db, 
&mysql_link)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = -1;
-                       break;
-               default:
-                       WRONG_PARAM_COUNT;
-                       break;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&|r", &db, 
&db_len, UG(utf8_conv), &mysql_link) == FAILURE) {
+               return;
        }
 
-       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
"MySQL-Link", le_link, le_plink);
-       
-       convert_to_string_ex(db);
+       if (ZEND_NUM_ARGS() == 1) {
+               id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+               CHECK_LINK(id);
+       }
 
-       if (mysql_drop_db(&mysql->conn, Z_STRVAL_PP(db))==0) {
+       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, 
"MySQL-Link", le_link, le_plink);
+       
+       if (mysql_drop_db(&mysql->conn, db)==0) {
                RETURN_TRUE;
        } else {
                RETURN_FALSE;
@@ -1205,7 +1116,7 @@
 
 /* {{{ php_mysql_do_query_general
  */
-static void php_mysql_do_query_general(zval **query, zval **mysql_link, int 
link_id, zval **db, int use_store, zval *return_value TSRMLS_DC)
+static void php_mysql_do_query_general(char *query, zval **mysql_link, int 
link_id, char *db, int use_store, zval *return_value TSRMLS_DC)
 {
        php_mysql_conn *mysql;
        MYSQL_RES *mysql_result;
@@ -1213,23 +1124,20 @@
        ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, link_id, 
"MySQL-Link", le_link, le_plink);
        
        if (db) {
-               convert_to_string_ex(db);
-               if (!php_mysql_select_db(mysql, Z_STRVAL_PP(db) TSRMLS_CC)) {
+               if (!php_mysql_select_db(mysql, db TSRMLS_CC)) {
                        RETURN_FALSE;
                }
        }
 
        PHPMY_UNBUFFERED_QUERY_CHECK();
 
-       convert_to_string_ex(query);
-
        /* check explain */
        if (MySG(trace_mode)) {
-               if (!strncasecmp("select", Z_STRVAL_PP(query), 6)){
+               if (!strncasecmp("select", query, 6)){
                        MYSQL_ROW       row;
                        
-                       char *newquery = (char *)emalloc(Z_STRLEN_PP(query) + 
10);      
-                       sprintf ((char *)newquery, "EXPLAIN %s", 
Z_STRVAL_PP(query));
+                       char *newquery = (char *)emalloc(strlen(query) + 10);   
+                       sprintf ((char *)newquery, "EXPLAIN %s", query);
                        mysql_real_query(&mysql->conn, newquery, 
strlen(newquery));
                        efree (newquery);
                        if (mysql_errno(&mysql->conn)) {
@@ -1252,7 +1160,7 @@
 
        /* mysql_query is binary unsafe, use mysql_real_query */
 #if MYSQL_VERSION_ID > 32199
-       if (mysql_real_query(&mysql->conn, Z_STRVAL_PP(query), 
Z_STRLEN_PP(query))!=0) {
+       if (mysql_real_query(&mysql->conn, query, strlen(query))!=0) {
                /* check possible error */
                if (MySG(trace_mode)){
                        if (mysql_errno(&mysql->conn)){
@@ -1262,7 +1170,7 @@
                RETURN_FALSE;
        }
 #else
-       if (mysql_query(&mysql->conn, Z_STRVAL_PP(query))!=0) {
+       if (mysql_query(&mysql->conn, query)!=0) {
                /* check possible error */
                if (MySG(trace_mode)){
                        if (mysql_errno(&mysql->conn)){
@@ -1297,32 +1205,23 @@
  */
 static void php_mysql_do_query(INTERNAL_FUNCTION_PARAMETERS, int use_store)
 {
-       zval **query, **mysql_link;
-       int id;
+       zval    *mysql_link;
+       char    *query;
+       int             id=-1, query_len;
        
-       switch(ZEND_NUM_ARGS()) {
-               case 1:
-                       if (zend_get_parameters_ex(1, &query)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-                       CHECK_LINK(id);
-                       break;
-               case 2:
-                       if (zend_get_parameters_ex(2, &query, 
&mysql_link)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = -1;
-                       break;
-               default:
-                       WRONG_PARAM_COUNT;
-                       break;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&|r", &query, 
&query_len, UG(utf8_conv), &mysql_link) == FAILURE) {
+               return;
+       }
+
+       if (ZEND_NUM_ARGS() == 1) {
+               id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+               CHECK_LINK(id);
        }
-       php_mysql_do_query_general(query, mysql_link, id, NULL, use_store, 
return_value TSRMLS_CC);
+       php_mysql_do_query_general(query, &mysql_link, id, NULL, use_store, 
return_value TSRMLS_CC);
 }
 /* }}} */
 
-/* {{{ proto resource mysql_query(string query [, int link_identifier])
+/* {{{ proto resource mysql_query(string query [, int link_identifier]) U
    Sends an SQL query to MySQL */
 PHP_FUNCTION(mysql_query)
 {
@@ -1331,7 +1230,7 @@
 /* }}} */
 
 
-/* {{{ proto resource mysql_unbuffered_query(string query [, int 
link_identifier])
+/* {{{ proto resource mysql_unbuffered_query(string query [, int 
link_identifier]) U
    Sends an SQL query to MySQL, without fetching and buffering the result rows 
*/
 PHP_FUNCTION(mysql_unbuffered_query)
 {
@@ -1340,30 +1239,21 @@
 /* }}} */
 
 
-/* {{{ proto resource mysql_db_query(string database_name, string query [, int 
link_identifier])
+/* {{{ proto resource mysql_db_query(string database_name, string query [, int 
link_identifier]) U
    Sends an SQL query to MySQL */
 PHP_FUNCTION(mysql_db_query)
 {
-       zval **db, **query, **mysql_link;
-       int id;
+       zval *mysql_link;
+       char *db, *query;
+       int id = -1, db_len, query_len;
        
-       switch(ZEND_NUM_ARGS()) {
-               case 2:
-                       if (zend_get_parameters_ex(2, &db, &query)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-                       CHECK_LINK(id);
-                       break;
-               case 3:
-                       if (zend_get_parameters_ex(3, &db, &query, 
&mysql_link)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = -1;
-                       break;
-               default:
-                       WRONG_PARAM_COUNT;
-                       break;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&s&|r", &db, 
&db_len, UG(utf8_conv), &query, &query_len, UG(utf8_conv), &mysql_link) == 
FAILURE) {
+               return;
+       }
+
+       if (ZEND_NUM_ARGS() == 2) {
+               id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+               CHECK_LINK(id);
        }
 
        /* FIXME: Unicode support??? */
@@ -1371,12 +1261,12 @@
                php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is 
deprecated; use mysql_query() instead");
        }
        
-       php_mysql_do_query_general(query, mysql_link, id, db, 
MYSQL_STORE_RESULT, return_value TSRMLS_CC);
+       php_mysql_do_query_general(query, &mysql_link, id, db, 
MYSQL_STORE_RESULT, return_value TSRMLS_CC);
 }
 /* }}} */
 
 
-/* {{{ proto resource mysql_list_dbs([int link_identifier])
+/* {{{ proto resource mysql_list_dbs([int link_identifier]) U
    List databases available on a MySQL server */
 PHP_FUNCTION(mysql_list_dbs)
 {
@@ -1414,37 +1304,27 @@
 /* }}} */
 
 
-/* {{{ proto resource mysql_list_tables(string database_name [, int 
link_identifier])
+/* {{{ proto resource mysql_list_tables(string database_name [, int 
link_identifier]) U
    List tables in a MySQL database */
 PHP_FUNCTION(mysql_list_tables)
 {
-       zval **db, **mysql_link;
-       int id;
+       zval *mysql_link;
+       char *db;
+       int id = -1, db_len;
        php_mysql_conn *mysql;
        MYSQL_RES *mysql_result;
        
-       switch(ZEND_NUM_ARGS()) {
-               case 1:
-                       if (zend_get_parameters_ex(1, &db)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-                       CHECK_LINK(id);
-                       break;
-               case 2:
-                       if (zend_get_parameters_ex(2, &db, 
&mysql_link)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = -1;
-                       break;
-               default:
-                       WRONG_PARAM_COUNT;
-                       break;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&|r", &db, 
&db_len, UG(utf8_conv), &mysql_link) == FAILURE) {
+               return;
        }
-       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
"MySQL-Link", le_link, le_plink);
 
-       convert_to_string_ex(db);
-       if (!php_mysql_select_db(mysql, Z_STRVAL_PP(db) TSRMLS_CC)) {
+       if (ZEND_NUM_ARGS() == 1) {
+               id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+               CHECK_LINK(id);
+       }
+       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, 
"MySQL-Link", le_link, le_plink);
+
+       if (!php_mysql_select_db(mysql, db TSRMLS_CC)) {
                RETURN_FALSE;
        }
 
@@ -1459,45 +1339,34 @@
 /* }}} */
 
 
-/* {{{ proto resource mysql_list_fields(string database_name, string 
table_name [, int link_identifier])
+/* {{{ proto resource mysql_list_fields(string database_name, string 
table_name [, int link_identifier]) U
    List MySQL result fields */
 PHP_FUNCTION(mysql_list_fields)
 {
-       zval **db, **table, **mysql_link;
-       int id;
+       zval *mysql_link;
+       char *db, *table;
+       int id = -1, db_len, table_len;
        php_mysql_conn *mysql;
        MYSQL_RES *mysql_result;
 
-       switch(ZEND_NUM_ARGS()) {
-               case 2:
-                       if (zend_get_parameters_ex(2, &db, &table)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-                       CHECK_LINK(id);
-                       break;
-               case 3:
-                       if (zend_get_parameters_ex(3, &db, &table, 
&mysql_link)==FAILURE) {
-                               RETURN_FALSE;
-                       }
-                       id = -1;
-                       break;
-               default:
-                       WRONG_PARAM_COUNT;
-                       break;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&s&|r", &db, 
&db_len, UG(utf8_conv), &table, &table_len, UG(utf8_conv), &mysql_link) == 
FAILURE) {
+               return;
        }
 
-       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
"MySQL-Link", le_link, le_plink);
+       if (ZEND_NUM_ARGS() == 1) {
+               id = 
php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+               CHECK_LINK(id);
+       }
 
-       convert_to_string_ex(db);
-       if (!php_mysql_select_db(mysql, Z_STRVAL_PP(db) TSRMLS_CC)) {
+       ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, 
"MySQL-Link", le_link, le_plink);
+
+       if (!php_mysql_select_db(mysql, db TSRMLS_CC)) {
                RETURN_FALSE;
        }
 
        PHPMY_UNBUFFERED_QUERY_CHECK();
 
-       convert_to_string_ex(table);
-       if ((mysql_result=mysql_list_fields(&mysql->conn, Z_STRVAL_PP(table), 
NULL))==NULL) {
+       if ((mysql_result=mysql_list_fields(&mysql->conn, table, NULL))==NULL) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save 
MySQL query result");
                RETURN_FALSE;
        }
@@ -1505,7 +1374,7 @@
 }
 /* }}} */
 
-/* {{{ proto resource mysql_list_processes([int link_identifier])
+/* {{{ proto resource mysql_list_processes([int link_identifier]) U
        Returns a result set describing the current server threads */
 PHP_FUNCTION(mysql_list_processes)
 {
@@ -1538,7 +1407,7 @@
 /* }}} */
 
 
-/* {{{ proto string mysql_error([int link_identifier])
+/* {{{ proto string mysql_error([int link_identifier]) U
    Returns the text of the error message from previous MySQL operation */
 PHP_FUNCTION(mysql_error)
 {
@@ -1551,7 +1420,7 @@
                        id = MySG(default_link);
                        if (id==-1) {
                                if (MySG(connect_error)!=NULL){
-                                       RETURN_STRING(MySG(connect_error),1);
+                                       RETURN_UTF8_STRING(MySG(connect_error), 
ZSTR_DUPLICATE);
                                } else {
                                        RETURN_FALSE;
                                }
@@ -1570,7 +1439,7 @@
        
        ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
"MySQL-Link", le_link, le_plink);
        
-       RETURN_STRING((char *)mysql_error(&mysql->conn), 1);
+       RETURN_UTF8_STRING((char *)mysql_error(&mysql->conn), ZSTR_DUPLICATE);
 }
 /* }}} */
 
@@ -1647,33 +1516,26 @@
 /* }}} */
 
 
-/* {{{ proto string mysql_escape_string(string to_be_escaped)
+/* {{{ proto string mysql_escape_string(string to_be_escaped) U
    Escape string for mysql query */
 PHP_FUNCTION(mysql_escape_string)
 {
-       zval **str;
+       char *str, *new_str;
+       int  str_len, new_str_len;
 
-       if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &str) == FAILURE) {
-               ZEND_WRONG_PARAM_COUNT();
-       }
-       convert_to_string_ex(str);
-       /* assume worst case situation, which is 2x of the original string.
-        * we don't realloc() down to the real size since it'd most probably not
-        * be worth it
-        */
-
-       Z_STRVAL_P(return_value) = (char *) safe_emalloc(Z_STRLEN_PP(str), 2, 
1);
-       Z_STRLEN_P(return_value) = 
mysql_escape_string(Z_STRVAL_P(return_value), Z_STRVAL_PP(str), 
Z_STRLEN_PP(str));
-       Z_TYPE_P(return_value) = IS_STRING;
 
-       if (MySG(trace_mode)){
-               php_error_docref("function.mysql-real-escape-string" TSRMLS_CC, 
E_WARNING, "This function is deprecated; use mysql_real_escape_string() 
instead");
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&", &str, 
&str_len, UG(utf8_conv)) == FAILURE) {
+               return;
        }
 
+       new_str = (char *) safe_emalloc(str_len, 2, 1);
+       new_str_len = mysql_escape_string(new_str, str, str_len);
+       RETVAL_UTF8_STRINGL(new_str, new_str_len, ZSTR_DUPLICATE);
+       efree(new_str);
 }
 /* }}} */
 
-/* {{{ proto string mysql_real_escape_string(string to_be_escaped [, int 
link_identifier])
+/* {{{ proto string mysql_real_escape_string(string to_be_escaped [, int 
link_identifier]) U
        Escape special characters in a string for use in a SQL statement, 
taking into account the current charset of the connection */
 PHP_FUNCTION(mysql_real_escape_string)
 {
@@ -1684,7 +1546,7 @@
        php_mysql_conn *mysql;
 
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|r", &str, 
&str_len, &mysql_link) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&|r", &str, 
&str_len, UG(utf8_conv), &mysql_link) == FAILURE) {
                return;
        }
 
@@ -1697,13 +1559,12 @@
 
        new_str = safe_emalloc(str_len, 2, 1);
        new_str_len = mysql_real_escape_string(&mysql->conn, new_str, str, 
str_len);
-       new_str = erealloc(new_str, new_str_len + 1);
-
-       RETURN_STRINGL(new_str, new_str_len, 0);
+       RETVAL_UTF8_STRINGL(new_str, new_str_len, ZSTR_DUPLICATE);
+       efree(new_str);
 }
 /* }}} */
 
-/* {{{ proto int mysql_insert_id([int link_identifier])
+/* {{{ proto int mysql_insert_id([int link_identifier]) U
    Gets the ID generated from the previous INSERT operation */
 PHP_FUNCTION(mysql_insert_id)
 {
@@ -1736,7 +1597,7 @@
 /* }}} */
 
 
-/* {{{ proto mixed mysql_result(resource result, int row [, mixed field])
+/* {{{ proto mixed mysql_result(resource result, int row [, mixed field]) U
    Gets result data */
 PHP_FUNCTION(mysql_result)
 {
@@ -1824,9 +1685,7 @@
        }
 
        if (sql_row[field_offset]) {
-               Z_TYPE_P(return_value) = IS_STRING;
-               Z_STRLEN_P(return_value) = sql_row_lengths[field_offset];
-               Z_STRVAL_P(return_value) = (char *) 
safe_estrndup(sql_row[field_offset], Z_STRLEN_P(return_value));
+               RETURN_UTF8_STRINGL(sql_row[field_offset], 
sql_row_lengths[field_offset], ZSTR_DUPLICATE);
        } else {
                Z_TYPE_P(return_value) = IS_NULL;
        }
@@ -1834,9 +1693,9 @@
 /* }}} */
 
 
-/* {{{ proto int mysql_num_rows(resource result)
+/* {{{ proto int mysql_num_rows(resource result) U
    Gets number of rows in a result */
-PHP_FUNCTION(mysql_num_rows)
+PHP_FUNCTION(mysql_num_rows) 
 {
        zval **result;
        MYSQL_RES *mysql_result;
@@ -1853,7 +1712,7 @@
 }
 /* }}} */
 
-/* {{{ proto int mysql_num_fields(resource result)
+/* {{{ proto int mysql_num_fields(resource result) U
    Gets number of fields in a result */
 PHP_FUNCTION(mysql_num_fields)
 {
@@ -1888,7 +1747,7 @@
                char *class_name;
                int class_name_len;
 
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|sz", 
&res, &class_name, &class_name_len, &ctor_params) == FAILURE) {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|s&z", 
&res, &class_name, &class_name_len, UG(utf8_conv), &ctor_params) == FAILURE) {
                        return;
                }
                result = &res;
@@ -1949,7 +1808,15 @@
 
                        MAKE_STD_ZVAL(data);
 
-                       ZVAL_STRINGL(data, mysql_row[i], mysql_row_lengths[i], 
1);
+                       if (UG(unicode)) {
+                               UChar *ustr;
+                               int ulen;
+
+                               zend_string_to_unicode(UG(utf8_conv), &ustr, 
&ulen, mysql_row[i], mysql_row_lengths[i] TSRMLS_CC);
+                               ZVAL_UNICODEL(data, ustr, ulen, 0);
+                       } else {
+                         ZVAL_STRINGL(data, mysql_row[i], 
mysql_row_lengths[i], 1);
+                       }
 
                        if (result_type & MYSQL_NUM) {
                                add_index_zval(return_value, i, data);
@@ -1958,7 +1825,16 @@
                                if (result_type & MYSQL_NUM) {
                                        ZVAL_ADDREF(data);
                                }
-                               add_assoc_zval(return_value, mysql_field->name, 
data);
+                               if (UG(unicode)) {
+                                       UChar *ustr;
+                                       int ulen;
+
+                                       zend_string_to_unicode(UG(utf8_conv), 
&ustr, &ulen, mysql_field->name, strlen(mysql_field->name) TSRMLS_CC);
+                                       add_u_assoc_zval_ex(return_value, 
IS_UNICODE, ZSTR(ustr), ulen + 1, data);
+                                       efree(ustr);
+                               } else {
+                                       add_assoc_zval(return_value, 
mysql_field->name, data);
+                               }
                        }
                } else {
                        /* NULL value. */
@@ -1967,7 +1843,16 @@
                        }
 
                        if (result_type & MYSQL_ASSOC) {
-                               add_assoc_null(return_value, mysql_field->name);
+                               if (UG(unicode)) {
+                                       UChar *ustr;
+                                       int ulen;
+
+                                       zend_string_to_unicode(UG(utf8_conv), 
&ustr, &ulen, mysql_field->name, strlen(mysql_field->name) TSRMLS_CC);
+                                       add_u_assoc_null_ex(return_value, 
IS_UNICODE, ZSTR(ustr), ulen + 1);
+                                       efree(ustr);
+                               } else {
+                                       add_assoc_null(return_value, 
mysql_field->name);
+                               }
                        }
                }
        }
@@ -2038,7 +1923,7 @@
 }
 /* }}} */
 
-/* {{{ proto array mysql_fetch_row(resource result)
+/* {{{ proto array mysql_fetch_row(resource result) U
    Gets a result row as an enumerated array */
 PHP_FUNCTION(mysql_fetch_row)
 {
@@ -2060,7 +1945,7 @@
 /* }}} */
 
 
-/* {{{ proto array mysql_fetch_array(resource result [, int result_type])
+/* {{{ proto array mysql_fetch_array(resource result [, int result_type]) U
    Fetch a result row as an array (associative, numeric or both) */
 PHP_FUNCTION(mysql_fetch_array)
 {
@@ -2069,7 +1954,7 @@
 /* }}} */
 
 
-/* {{{ proto array mysql_fetch_assoc(resource result)
+/* {{{ proto array mysql_fetch_assoc(resource result) U
    Fetch a result row as an associative array */
 PHP_FUNCTION(mysql_fetch_assoc)
 {
@@ -2077,7 +1962,7 @@
 }
 /* }}} */
 
-/* {{{ proto bool mysql_data_seek(resource result, int row_number)
+/* {{{ proto bool mysql_data_seek(resource result, int row_number) U
    Move internal result pointer */
 PHP_FUNCTION(mysql_data_seek)
 {
@@ -2101,7 +1986,7 @@
 /* }}} */
 
 
-/* {{{ proto array mysql_fetch_lengths(resource result)
+/* {{{ proto array mysql_fetch_lengths(resource result) U
    Gets max data size of each column in a result */
 PHP_FUNCTION(mysql_fetch_lengths)
 {
@@ -2202,7 +2087,7 @@
 }
 /* }}} */
 
-/* {{{ proto object mysql_fetch_field(resource result [, int field_offset])
+/* {{{ proto object mysql_fetch_field(resource result [, int field_offset]) U
    Gets column information from a result and return as an object */
 PHP_FUNCTION(mysql_fetch_field)
 {
@@ -2240,9 +2125,9 @@
        }
        object_init(return_value);
 
-       add_property_string(return_value, 
"name",(mysql_field->name?mysql_field->name:""), 1);
-       add_property_string(return_value, 
"table",(mysql_field->table?mysql_field->table:""), 1);
-       add_property_string(return_value, 
"def",(mysql_field->def?mysql_field->def:""), 1);
+       add_property_utf8_string(return_value, 
"name",(mysql_field->name?mysql_field->name:""), ZSTR_DUPLICATE);
+       add_property_utf8_string(return_value, 
"table",(mysql_field->table?mysql_field->table:""), ZSTR_DUPLICATE);
+       add_property_utf8_string(return_value, 
"def",(mysql_field->def?mysql_field->def:""), ZSTR_DUPLICATE);
        add_property_long(return_value, "max_length", mysql_field->max_length);
        add_property_long(return_value, "not_null", 
IS_NOT_NULL(mysql_field->flags)?1:0);
        add_property_long(return_value, "primary_key", 
IS_PRI_KEY(mysql_field->flags)?1:0);
@@ -2250,14 +2135,14 @@
        add_property_long(return_value, 
"unique_key",(mysql_field->flags&UNIQUE_KEY_FLAG?1:0));
        add_property_long(return_value, "numeric", 
IS_NUM(Z_TYPE_P(mysql_field))?1:0);
        add_property_long(return_value, "blob", 
IS_BLOB(mysql_field->flags)?1:0);
-       add_property_string(return_value, "type", 
php_mysql_get_field_name(Z_TYPE_P(mysql_field)), 1);
+       add_property_utf8_string(return_value, "type", 
php_mysql_get_field_name(Z_TYPE_P(mysql_field)), ZSTR_DUPLICATE);
        add_property_long(return_value, 
"unsigned",(mysql_field->flags&UNSIGNED_FLAG?1:0));
        add_property_long(return_value, 
"zerofill",(mysql_field->flags&ZEROFILL_FLAG?1:0));
 }
 /* }}} */
 
 
-/* {{{ proto bool mysql_field_seek(resource result, int field_offset)
+/* {{{ proto bool mysql_field_seek(resource result, int field_offset) U
    Sets result pointer to a specific field offset */
 PHP_FUNCTION(mysql_field_seek)
 {
@@ -2315,24 +2200,17 @@
        
        switch (entry_type) {
                case PHP_MYSQL_FIELD_NAME:
-                       Z_STRLEN_P(return_value) = strlen(mysql_field->name);
-                       Z_STRVAL_P(return_value) = estrndup(mysql_field->name, 
Z_STRLEN_P(return_value));
-                       Z_TYPE_P(return_value) = IS_STRING;
+                       RETVAL_UTF8_STRING(mysql_field->name, ZSTR_DUPLICATE);  
                        break;
                case PHP_MYSQL_FIELD_TABLE:
-                       Z_STRLEN_P(return_value) = strlen(mysql_field->table);
-                       Z_STRVAL_P(return_value) = estrndup(mysql_field->table, 
Z_STRLEN_P(return_value));
-                       Z_TYPE_P(return_value) = IS_STRING;
+                       RETVAL_UTF8_STRING(mysql_field->table, ZSTR_DUPLICATE); 
                        break;
                case PHP_MYSQL_FIELD_LEN:
                        Z_LVAL_P(return_value) = mysql_field->length;
                        Z_TYPE_P(return_value) = IS_LONG;
                        break;
                case PHP_MYSQL_FIELD_TYPE:
-                       Z_STRVAL_P(return_value) = 
php_mysql_get_field_name(Z_TYPE_P(mysql_field));
-                       Z_STRLEN_P(return_value) = 
strlen(Z_STRVAL_P(return_value));
-                       Z_STRVAL_P(return_value) = 
estrndup(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value));
-                       Z_TYPE_P(return_value) = IS_STRING;
+                       
RETVAL_UTF8_STRING(php_mysql_get_field_name(Z_TYPE_P(mysql_field)), 
ZSTR_DUPLICATE);    
                        break;
                case PHP_MYSQL_FIELD_FLAGS:
                        memcpy(buf, "", sizeof(""));
@@ -2402,10 +2280,8 @@
                                buf[len-1] = 0;
                                len--;
                        }
-                       
-                       Z_STRLEN_P(return_value) = len;
-                       Z_STRVAL_P(return_value) = estrndup(buf, len);
-                       Z_TYPE_P(return_value) = IS_STRING;
+               
+                       RETVAL_UTF8_STRING(buf, ZSTR_DUPLICATE);        
                        break;
 
                default:
@@ -2423,7 +2299,7 @@
 /* }}} */
 
 
-/* {{{ proto string mysql_field_table(resource result, int field_offset)
+/* {{{ proto string mysql_field_table(resource result, int field_offset) U
    Gets name of the table the specified field is in */
 PHP_FUNCTION(mysql_field_table)
 {
@@ -2432,7 +2308,7 @@
 /* }}} */
 
 
-/* {{{ proto int mysql_field_len(resource result, int field_offset)
+/* {{{ proto int mysql_field_len(resource result, int field_offset) U
    Returns the length of the specified field */
 PHP_FUNCTION(mysql_field_len)
 {
@@ -2441,7 +2317,7 @@
 /* }}} */
 
 
-/* {{{ proto string mysql_field_type(resource result, int field_offset)
+/* {{{ proto string mysql_field_type(resource result, int field_offset) U
    Gets the type of the specified field in a result */
 PHP_FUNCTION(mysql_field_type)
 {
@@ -2450,7 +2326,7 @@
 /* }}} */
 
 
-/* {{{ proto string mysql_field_flags(resource result, int field_offset)
+/* {{{ proto string mysql_field_flags(resource result, int field_offset) U
    Gets the flags associated with the specified field in a result */
 PHP_FUNCTION(mysql_field_flags)
 {
@@ -2459,7 +2335,7 @@
 /* }}} */
 
 
-/* {{{ proto bool mysql_free_result(resource result)
+/* {{{ proto bool mysql_free_result(resource result) U
    Free result memory */
 PHP_FUNCTION(mysql_free_result)
 {
@@ -2481,7 +2357,7 @@
 }
 /* }}} */
 
-/* {{{ proto bool mysql_ping([int link_identifier])
+/* {{{ proto bool mysql_ping([int link_identifier]) U
    Ping a server connection. If no connection then reconnect. */
 PHP_FUNCTION(mysql_ping)
 {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to