]>
Commit | Line | Data |
---|---|---|
5624399c ER |
1 | --- ext/pdo_mysql/mysql_driver.c 2006-12-02 17:26:53.000000000 +0100 |
2 | +++ ext/pdo_mysql/mysql_driver.c 2006-12-02 17:27:12.000000000 +0100 | |
3 | @@ -436,6 +436,7 @@ | |
4 | pdo_mysql_db_handle *H; | |
5 | int i, ret = 0; | |
6 | char *host = NULL, *unix_socket = NULL; | |
7 | + char *connect_charset = NULL; | |
8 | unsigned int port = 3306; | |
9 | char *dbname; | |
10 | struct pdo_data_src_parser vars[] = { | |
11 | @@ -546,6 +547,13 @@ | |
12 | if (vars[2].optval && !strcmp("localhost", vars[2].optval)) { | |
13 | unix_socket = vars[4].optval; | |
14 | } | |
15 | + | |
16 | + connect_charset = PDOMYSQLG(connect_charset); | |
17 | + | |
18 | + if (connect_charset != NULL) { | |
19 | + mysql_options(H->server, MYSQL_SET_CHARSET_NAME, connect_charset); | |
20 | + } | |
21 | + | |
22 | if (mysql_real_connect(H->server, host, dbh->username, dbh->password, dbname, port, unix_socket, connect_opts) == NULL) { | |
23 | pdo_mysql_error(dbh); | |
24 | goto cleanup; | |
25 | --- ext/pdo_mysql/pdo_mysql.c 2006-12-02 17:26:53.000000000 +0100 | |
26 | +++ ext/pdo_mysql/pdo_mysql.c 2006-12-02 17:27:12.000000000 +0100 | |
27 | @@ -30,6 +30,9 @@ | |
28 | #include "php_pdo_mysql.h" | |
29 | #include "php_pdo_mysql_int.h" | |
30 | ||
31 | +ZEND_DECLARE_MODULE_GLOBALS(pdo_mysql) | |
32 | +static PHP_GINIT_FUNCTION(pdo_mysql); | |
33 | + | |
34 | /* {{{ pdo_mysql_functions[] */ | |
35 | zend_function_entry pdo_mysql_functions[] = { | |
36 | {NULL, NULL, NULL} | |
37 | @@ -61,7 +64,11 @@ | |
38 | NULL, | |
39 | PHP_MINFO(pdo_mysql), | |
40 | "1.0.2", | |
41 | - STANDARD_MODULE_PROPERTIES | |
42 | + PHP_MODULE_GLOBALS(pdo_mysql), | |
43 | + PHP_GINIT(pdo_mysql), | |
44 | + NULL, | |
45 | + NULL, | |
46 | + STANDARD_MODULE_PROPERTIES_EX | |
47 | }; | |
48 | /* }}} */ | |
49 | ||
50 | @@ -69,12 +76,23 @@ | |
51 | ZEND_GET_MODULE(pdo_mysql) | |
52 | #endif | |
53 | ||
54 | +PHP_INI_BEGIN() | |
55 | + STD_PHP_INI_ENTRY("pdo_mysql.connect_charset", NULL, PHP_INI_ALL, OnUpdateString, connect_charset, zend_pdo_mysql_globals, pdo_mysql_globals) | |
56 | +PHP_INI_END() | |
57 | + | |
58 | +static PHP_GINIT_FUNCTION(pdo_mysql) | |
59 | +{ | |
60 | + pdo_mysql_globals->connect_charset = NULL; | |
61 | +} | |
62 | + | |
63 | /* true global environment */ | |
64 | ||
65 | /* {{{ PHP_MINIT_FUNCTION | |
66 | */ | |
67 | PHP_MINIT_FUNCTION(pdo_mysql) | |
68 | { | |
69 | + REGISTER_INI_ENTRIES(); | |
70 | + | |
71 | REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_USE_BUFFERED_QUERY", (long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY); | |
72 | REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_LOCAL_INFILE", (long)PDO_MYSQL_ATTR_LOCAL_INFILE); | |
73 | REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND); | |
74 | @@ -91,6 +109,7 @@ | |
75 | */ | |
76 | PHP_MSHUTDOWN_FUNCTION(pdo_mysql) | |
77 | { | |
78 | + UNREGISTER_INI_ENTRIES(); | |
79 | php_pdo_unregister_driver(&pdo_mysql_driver); | |
80 | return SUCCESS; | |
81 | } | |
82 | @@ -103,6 +122,8 @@ | |
83 | php_info_print_table_start(); | |
84 | php_info_print_table_header(2, "PDO Driver for MySQL, client library version", mysql_get_client_info()); | |
85 | php_info_print_table_end(); | |
86 | + | |
87 | + DISPLAY_INI_ENTRIES(); | |
88 | } | |
89 | /* }}} */ | |
90 | ||
91 | --- ext/pdo_mysql/php_pdo_mysql.h 2006-12-02 17:26:53.000000000 +0100 | |
92 | +++ ext/pdo_mysql/php_pdo_mysql.h 2006-12-02 17:28:49.000000000 +0100 | |
93 | @@ -40,6 +40,18 @@ | |
94 | PHP_RSHUTDOWN_FUNCTION(pdo_mysql); | |
95 | PHP_MINFO_FUNCTION(pdo_mysql); | |
96 | ||
97 | +ZEND_BEGIN_MODULE_GLOBALS(pdo_mysql) | |
98 | + char *connect_charset; | |
99 | +ZEND_END_MODULE_GLOBALS(pdo_mysql) | |
100 | + | |
101 | +#ifdef ZTS | |
102 | +# define PDOMYSQLG(v) TSRMG(pdo_mysql_globals_id, zend_pdo_mysql_globals *, v) | |
103 | +#else | |
104 | +# define PDOMYSQLG(v) (pdo_mysql_globals.v) | |
105 | +#endif | |
106 | + | |
107 | +ZEND_EXTERN_MODULE_GLOBALS(pdo_mysql) | |
108 | + | |
109 | #endif /* PHP_PDO_MYSQL_H */ | |
110 | ||
111 |