What about the mysqli_get_charset_name() (instead of mysqli_character_set_name)?

    --Jani


On Fri, 13 May 2005, Georg Richter wrote:

georg           Fri May 13 09:11:41 2005 EDT

 Modified files:
   /php-src/ext/mysqli  mysqli_nonapi.c mysqli_fe.c php_mysqli.h
   /php-src/ext/mysqli/tests    065.phpt
 Log:
 - fixed compile error under windows. Functionality for changing the
 character set was moved to libmysql (4.1 bk tree - will be merged into
 5.0 within the next days).
 - renamed mysql_set_character_set to mysqli_set_charset


http://cvs.php.net/diff.php/php-src/ext/mysqli/mysqli_nonapi.c?r1=1.43&r2=1.44&ty=u Index: php-src/ext/mysqli/mysqli_nonapi.c diff -u php-src/ext/mysqli/mysqli_nonapi.c:1.43 php-src/ext/mysqli/mysqli_nonapi.c:1.44 --- php-src/ext/mysqli/mysqli_nonapi.c:1.43 Sun May 8 04:39:54 2005 +++ php-src/ext/mysqli/mysqli_nonapi.c Fri May 13 09:11:40 2005 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+

-  $Id: mysqli_nonapi.c,v 1.43 2005/05/08 08:39:54 georg Exp $
+  $Id: mysqli_nonapi.c,v 1.44 2005/05/13 13:11:40 georg Exp $
*/

#ifdef HAVE_CONFIG_H
@@ -254,12 +254,10 @@
/* }}} */

#ifdef HAVE_MYSQLI_SET_CHARSET
-/* {{{ proto bool mysqli_set_character_set_name(object link, string csname)
+/* {{{ proto bool mysqli_set_charset(object link, string csname)
   sets client character set */
-PHP_FUNCTION(mysqli_set_character_set_name)
+PHP_FUNCTION(mysqli_set_charset)
{
-       struct charset_info_st *cs;
-       const char *save_csdir = charsets_dir;
        MY_MYSQL                        *mysql;
        zval                            *mysql_link;
        char                            *cs_name = NULL;
@@ -270,30 +268,10 @@
        }
        MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link");

-       if (mysql->mysql->options.charset_dir){
-               charsets_dir = mysql->mysql->options.charset_dir;
-       }
-
-       cs = get_charset_by_csname(cs_name, 1, MYF(0));
-
-       if (cs) {
-               char buff[MY_CS_NAME_SIZE + 10];
-               charsets_dir = save_csdir;
-               sprintf(buff, "SET NAMES %s", cs_name);
-               if (!mysql_query(mysql->mysql, buff)) {
-                       mysql->mysql->charset = cs;
-                       RETURN_TRUE;
-               }
-       } else {
-               char cs_dir_name[FN_REFLEN];
-       get_charsets_dir(cs_dir_name);
-               mysql->mysql->net.last_errno=CR_CANT_READ_CHARSET;
-               strcpy(mysql->mysql->net.sqlstate, "HY000");
-               sprintf(mysql->mysql->net.last_error, "Can't initialize character 
set %-.32s (path: %-.100s)",
-                               cs_name, cs_dir_name);
+       if (mysql_set_character_set(mysql->mysql, cs_name)) {
+               RETURN_FALSE;
        }
-       charsets_dir = save_csdir;
-       RETURN_FALSE;
+       RETURN_TRUE;
}
/* }}} */
#endif
http://cvs.php.net/diff.php/php-src/ext/mysqli/mysqli_fe.c?r1=1.43&r2=1.44&ty=u
Index: php-src/ext/mysqli/mysqli_fe.c
diff -u php-src/ext/mysqli/mysqli_fe.c:1.43 php-src/ext/mysqli/mysqli_fe.c:1.44
--- php-src/ext/mysqli/mysqli_fe.c:1.43 Sun May  8 04:39:54 2005
+++ php-src/ext/mysqli/mysqli_fe.c      Fri May 13 09:11:40 2005
@@ -15,7 +15,7 @@
  | Author: Georg Richter <[EMAIL PROTECTED]>                                |
  +----------------------------------------------------------------------+

-  $Id: mysqli_fe.c,v 1.43 2005/05/08 08:39:54 georg Exp $
+  $Id: mysqli_fe.c,v 1.44 2005/05/13 13:11:40 georg Exp $
*/

#ifdef HAVE_CONFIG_H
@@ -117,7 +117,7 @@
        PHP_FE(mysqli_rpl_query_type,                                           
NULL)
        PHP_FE(mysqli_select_db,                                                
        NULL)
#ifdef HAVE_MYSQLI_SET_CHARSET
-       PHP_FE(mysqli_set_character_set_name,                           NULL)
+       PHP_FE(mysqli_set_charset,                                              
        NULL)
#endif
        PHP_FE(mysqli_stmt_attr_get,                                            
NULL)
        PHP_FE(mysqli_stmt_attr_set,                                            
NULL)
@@ -181,7 +181,6 @@
function_entry mysqli_link_methods[] = {
        PHP_FALIAS(autocommit,mysqli_autocommit,NULL)
        PHP_FALIAS(change_user,mysqli_change_user,NULL)
-       PHP_FALIAS(character_set_name,mysqli_character_set_name,NULL)
        PHP_FALIAS(client_encoding, mysqli_character_set_name,NULL)
        PHP_FALIAS(close,mysqli_close,NULL)
        PHP_FALIAS(commit,mysqli_commit,NULL)
@@ -218,8 +217,7 @@
        PHP_FALIAS(rpl_query_type,mysqli_rpl_query_type,NULL)
        PHP_FALIAS(select_db,mysqli_select_db,NULL)
#ifdef HAVE_MYSQLI_SET_CHARSET
-       PHP_FALIAS(set_character_set_name,mysqli_set_character_set_name,NULL)
-       PHP_FALIAS(set_client_encoding,mysqli_set_character_set_name,NULL)
+       PHP_FALIAS(set_charset,mysqli_set_charset,NULL)
#endif
        PHP_FALIAS(set_opt, mysqli_options,NULL)
        PHP_FALIAS(slave_query,mysqli_slave_query,NULL)
http://cvs.php.net/diff.php/php-src/ext/mysqli/php_mysqli.h?r1=1.45&r2=1.46&ty=u
Index: php-src/ext/mysqli/php_mysqli.h
diff -u php-src/ext/mysqli/php_mysqli.h:1.45 
php-src/ext/mysqli/php_mysqli.h:1.46
--- php-src/ext/mysqli/php_mysqli.h:1.45        Sun May  8 04:39:54 2005
+++ php-src/ext/mysqli/php_mysqli.h     Fri May 13 09:11:40 2005
@@ -15,7 +15,7 @@
  | Author: Georg Richter <[EMAIL PROTECTED]>                                |
  +----------------------------------------------------------------------+

-  $Id: php_mysqli.h,v 1.45 2005/05/08 08:39:54 georg Exp $
+  $Id: php_mysqli.h,v 1.46 2005/05/13 13:11:40 georg Exp $
*/

/* A little hack to prevent build break, when mysql is used together with
@@ -25,9 +25,6 @@
#undef LIST
#endif

-#include <my_global.h>
-#include <my_sys.h>
-#include <m_ctype.h>
#include <mysql.h>
#include <errmsg.h>

@@ -104,7 +101,7 @@
#define PHP_MYSQLI_API __declspec(dllexport)
#if MYSQL_VERSION_ID > 50005
#define HAVE_MYSQLI_SET_CHARSET
-#elif MYSQL_VERSION_ID > 40110 && MYSQL_VERSION_ID < 50000
+#elif MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000
#define HAVE_MYSQLI_SET_CHARSET
#endif
#else
@@ -303,7 +300,7 @@
PHP_FUNCTION(mysqli_change_user);
PHP_FUNCTION(mysqli_character_set_name);
#ifdef HAVE_MYSQLI_SET_CHARSET
-PHP_FUNCTION(mysqli_set_character_set_name);
+PHP_FUNCTION(mysqli_set_charset);
#endif
PHP_FUNCTION(mysqli_close);
PHP_FUNCTION(mysqli_commit);
http://cvs.php.net/diff.php/php-src/ext/mysqli/tests/065.phpt?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mysqli/tests/065.phpt
diff -u php-src/ext/mysqli/tests/065.phpt:1.1 
php-src/ext/mysqli/tests/065.phpt:1.2
--- php-src/ext/mysqli/tests/065.phpt:1.1       Sun May  8 04:39:56 2005
+++ php-src/ext/mysqli/tests/065.phpt   Fri May 13 09:11:41 2005
@@ -10,10 +10,28 @@

        $mysql = new mysqli($host, $user, $passwd);

-       if ($mysql->set_client_encoding("utf8")) {
-               var_dump($mysql->client_encoding());
+       $esc_str = chr(0xbf) . chr(0x5c);
+
+       if ($mysql->set_charset("latin1")) {
+               /* 5C should be escaped */
+               $len[0] = strlen($mysql->real_escape_string($esc_str));
+               $charset[0] = $mysql->client_encoding();
        }
+
+       if ($mysql->set_charset("gbk")) {
+               /* nothing should be escaped, it's a valid gbk character */
+               $len[1] = strlen($mysql->real_escape_string($esc_str));
+               $charset[1] = $mysql->client_encoding();
+       }
+
        $mysql->close();
+       var_dump($len[0]);
+       var_dump($len[1]);
+       var_dump($charset[0]);
+       var_dump($charset[1]);
?>
--EXPECT--
-string(4) "utf8"
+int(3)
+int(2)
+string(6) "latin1"
+string(3) "gbk"



-- Donate @ http://pecl.php.net/wishlist.php/sniper

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



Reply via email to