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"
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php