georg Sun May 8 04:39:56 2005 EDT Added files: /php-src/ext/mysqli/tests 065.phpt
Modified files: /php-src/ext/mysqli mysqli_nonapi.c mysqli_fe.c php_mysqli.h Log: Added new function mysqli_set_character_set_name http://cvs.php.net/diff.php/php-src/ext/mysqli/mysqli_nonapi.c?r1=1.42&r2=1.43&ty=u Index: php-src/ext/mysqli/mysqli_nonapi.c diff -u php-src/ext/mysqli/mysqli_nonapi.c:1.42 php-src/ext/mysqli/mysqli_nonapi.c:1.43 --- php-src/ext/mysqli/mysqli_nonapi.c:1.42 Fri May 6 06:09:42 2005 +++ php-src/ext/mysqli/mysqli_nonapi.c Sun May 8 04:39:54 2005 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli_nonapi.c,v 1.42 2005/05/06 10:09:42 andrey Exp $ + $Id: mysqli_nonapi.c,v 1.43 2005/05/08 08:39:54 georg Exp $ */ #ifdef HAVE_CONFIG_H @@ -29,6 +29,8 @@ #include "ext/standard/info.h" #include "php_mysqli.h" +extern const char *charsets_dir; + /* {{{ proto object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]]) Open a connection to a mysql server */ PHP_FUNCTION(mysqli_connect) @@ -251,6 +253,51 @@ } /* }}} */ +#ifdef HAVE_MYSQLI_SET_CHARSET +/* {{{ proto bool mysqli_set_character_set_name(object link, string csname) + sets client character set */ +PHP_FUNCTION(mysqli_set_character_set_name) +{ + struct charset_info_st *cs; + const char *save_csdir = charsets_dir; + MY_MYSQL *mysql; + zval *mysql_link; + char *cs_name = NULL; + unsigned int len; + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &cs_name, &len) == FAILURE) { + return; + } + 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); + } + charsets_dir = save_csdir; + RETURN_FALSE; +} +/* }}} */ +#endif + /* * Local variables: * tab-width: 4 http://cvs.php.net/diff.php/php-src/ext/mysqli/mysqli_fe.c?r1=1.42&r2=1.43&ty=u Index: php-src/ext/mysqli/mysqli_fe.c diff -u php-src/ext/mysqli/mysqli_fe.c:1.42 php-src/ext/mysqli/mysqli_fe.c:1.43 --- php-src/ext/mysqli/mysqli_fe.c:1.42 Fri Jan 7 09:59:59 2005 +++ php-src/ext/mysqli/mysqli_fe.c Sun May 8 04:39:54 2005 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli_fe.c,v 1.42 2005/01/07 14:59:59 georg Exp $ + $Id: mysqli_fe.c,v 1.43 2005/05/08 08:39:54 georg Exp $ */ #ifdef HAVE_CONFIG_H @@ -116,6 +116,9 @@ PHP_FE(mysqli_rpl_probe, NULL) 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) +#endif PHP_FE(mysqli_stmt_attr_get, NULL) PHP_FE(mysqli_stmt_attr_set, NULL) PHP_FE(mysqli_stmt_field_count, NULL) @@ -214,6 +217,10 @@ PHP_FALIAS(rpl_probe,mysqli_rpl_probe,NULL) 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) +#endif PHP_FALIAS(set_opt, mysqli_options,NULL) PHP_FALIAS(slave_query,mysqli_slave_query,NULL) PHP_FALIAS(ssl_set,mysqli_ssl_set,NULL) http://cvs.php.net/diff.php/php-src/ext/mysqli/php_mysqli.h?r1=1.44&r2=1.45&ty=u Index: php-src/ext/mysqli/php_mysqli.h diff -u php-src/ext/mysqli/php_mysqli.h:1.44 php-src/ext/mysqli/php_mysqli.h:1.45 --- php-src/ext/mysqli/php_mysqli.h:1.44 Wed Apr 27 08:12:58 2005 +++ php-src/ext/mysqli/php_mysqli.h Sun May 8 04:39:54 2005 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: php_mysqli.h,v 1.44 2005/04/27 12:12:58 andrey Exp $ + $Id: php_mysqli.h,v 1.45 2005/05/08 08:39:54 georg Exp $ */ /* A little hack to prevent build break, when mysql is used together with @@ -25,6 +25,9 @@ #undef LIST #endif +#include <my_global.h> +#include <my_sys.h> +#include <m_ctype.h> #include <mysql.h> #include <errmsg.h> @@ -99,7 +102,13 @@ #ifdef PHP_WIN32 #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 +#define HAVE_MYSQLI_SET_CHARSET +#endif #else +#define HAVE_MYSQLI_SET_CHARSET #define PHP_MYSQLI_API #endif @@ -293,6 +302,9 @@ 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); +#endif PHP_FUNCTION(mysqli_close); PHP_FUNCTION(mysqli_commit); PHP_FUNCTION(mysqli_connect); http://cvs.php.net/co.php/php-src/ext/mysqli/tests/065.phpt?r=1.1&p=1 Index: php-src/ext/mysqli/tests/065.phpt +++ php-src/ext/mysqli/tests/065.phpt --TEST-- set character set --SKIPIF-- <?php require_once('skipif.inc'); ?> --FILE-- <?php include "connect.inc"; $mysql = new mysqli($host, $user, $passwd); if ($mysql->set_client_encoding("utf8")) { var_dump($mysql->client_encoding()); } $mysql->close(); ?> --EXPECT-- string(4) "utf8" -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php