summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Richter <georg@php.net>2005-05-13 13:11:41 +0000
committerGeorg Richter <georg@php.net>2005-05-13 13:11:41 +0000
commit49e1484da8ce266016e3942c9cc390bbc7d0d965 (patch)
tree8ca5f85cfa0021e13902186b1be210e47fb9b2e0
parent45d2c2f1fd2691987f48a1bc318873f752cd5ce8 (diff)
downloadphp-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.c6
-rw-r--r--ext/mysqli/mysqli_nonapi.c32
-rw-r--r--ext/mysqli/php_mysqli.h7
-rw-r--r--ext/mysqli/tests/065.phpt24
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"