Wouldn't it make more sense if these functions were called

      mysqli_get_charset_name() (instead of mysqli_character_set_name)
      mysqli_set_charset_name() (instead of mysqli_set_character_set_name)

    Those that there are now are quite confusing..

    --Jani


On Sun, 8 May 2005, Georg Richter wrote:

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"



-- 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