diff options
author | Georg Richter <georg@php.net> | 2005-05-13 13:11:41 +0000 |
---|---|---|
committer | Georg Richter <georg@php.net> | 2005-05-13 13:11:41 +0000 |
commit | 49e1484da8ce266016e3942c9cc390bbc7d0d965 (patch) | |
tree | 8ca5f85cfa0021e13902186b1be210e47fb9b2e0 | |
parent | 45d2c2f1fd2691987f48a1bc318873f752cd5ce8 (diff) | |
download | php-git-49e1484da8ce266016e3942c9cc390bbc7d0d965.tar.gz |
- 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
-rw-r--r-- | ext/mysqli/mysqli_fe.c | 6 | ||||
-rw-r--r-- | ext/mysqli/mysqli_nonapi.c | 32 | ||||
-rw-r--r-- | ext/mysqli/php_mysqli.h | 7 | ||||
-rw-r--r-- | ext/mysqli/tests/065.phpt | 24 |
4 files changed, 30 insertions, 39 deletions
diff --git a/ext/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c index df61d555e0..31d1790c3b 100644 --- a/ext/mysqli/mysqli_fe.c +++ b/ext/mysqli/mysqli_fe.c @@ -117,7 +117,7 @@ function_entry mysqli_functions[] = { 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_functions[] = { 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 @@ function_entry mysqli_link_methods[] = { 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) diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c index 169b3240b4..02eda47278 100644 --- a/ext/mysqli/mysqli_nonapi.c +++ b/ext/mysqli/mysqli_nonapi.c @@ -254,12 +254,10 @@ PHP_FUNCTION(mysqli_query) /* }}} */ #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 @@ PHP_FUNCTION(mysqli_set_character_set_name) } 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 diff --git a/ext/mysqli/php_mysqli.h b/ext/mysqli/php_mysqli.h index d72b0a8dc0..ef420351a9 100644 --- a/ext/mysqli/php_mysqli.h +++ b/ext/mysqli/php_mysqli.h @@ -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 @@ typedef struct { #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_autocommit); 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); diff --git a/ext/mysqli/tests/065.phpt b/ext/mysqli/tests/065.phpt index 1645e9f818..950a10a437 100644 --- a/ext/mysqli/tests/065.phpt +++ b/ext/mysqli/tests/065.phpt @@ -10,10 +10,28 @@ require_once('skipif.inc'); $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" |