Hello internals, Attached is a patch against PHP_4_4 allowing to specify a charset when talking to MySQL using ext/mysql and client libraries that come with MySQL >= 4.1.13 (the default being utf8).
This was mainly tested with latin1. To test, add an ini entry like this: mysql.default_charset = "latin1" Any constructive comments on the patch would be appreciated. Sincerely, Olivier
diff -u ext/mysql/php_mysql.c ext/mysql/php_mysql.c --- ext/mysql/php_mysql.c 2006-07-06 11:18:48.000000000 -0400 +++ ext/mysql/php_mysql.c 2006-07-06 10:48:45.000000000 -0400 @@ -354,6 +354,9 @@ STD_PHP_INI_ENTRY("mysql.default_socket", NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_socket, zend_mysql_globals, mysql_globals) STD_PHP_INI_ENTRY("mysql.connect_timeout", "60", PHP_INI_ALL, OnUpdateInt, connect_timeout, zend_mysql_globals, mysql_globals) STD_PHP_INI_BOOLEAN("mysql.trace_mode", "0", PHP_INI_ALL, OnUpdateInt, trace_mode, zend_mysql_globals, mysql_globals) +#if MYSQL_VERSION_ID >= 40113 + STD_PHP_INI_ENTRY("mysql.default_charset", NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_charset,zend_mysql_globals, mysql_globals) +#endif PHP_INI_END() /* }}} */ @@ -371,6 +374,9 @@ mysql_globals->connect_timeout = 0; mysql_globals->trace_mode = 0; mysql_globals->result_allocated = 0; +#if MYSQL_VERSION_ID >= 40113 + mysql_globals->default_charset = NULL; +#endif } /* }}} */ @@ -733,6 +739,10 @@ mysql = (php_mysql_conn *) le->ptr; } +#if MYSQL_VERSION_ID >= 40113 + if (MySG(default_charset) != NULL) + mysql_set_character_set(&mysql->conn, MySG(default_charset)); +#endif ZEND_REGISTER_RESOURCE(return_value, mysql, le_plink); } else { /* non persistent */ list_entry *index_ptr, new_index_ptr; @@ -795,6 +805,10 @@ } /* add it to the list */ +#if MYSQL_VERSION_ID >= 40113 + if (MySG(default_charset) != NULL) + mysql_set_character_set(&mysql->conn, MySG(default_charset)); +#endif ZEND_REGISTER_RESOURCE(return_value, mysql, le_link); /* add it to the hash */ diff -u ext/mysql/php_mysql.h ext/mysql/php_mysql.h --- ext/mysql/php_mysql.h 2006-07-06 11:18:48.000000000 -0400 +++ ext/mysql/php_mysql.h 2006-07-06 10:11:28.000000000 -0400 @@ -105,6 +105,9 @@ long connect_timeout; long result_allocated; long trace_mode; +#if MYSQL_VERSION_ID >= 40113 + char *default_charset; +#endif ZEND_END_MODULE_GLOBALS(mysql) #ifdef ZTS
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php