xref: /PHP-7.4/ext/mysqli/mysqli_fe.c (revision f085bddb)
1 /*
2   +----------------------------------------------------------------------+
3   | PHP Version 7                                                        |
4   +----------------------------------------------------------------------+
5   | Copyright (c) The PHP Group                                          |
6   +----------------------------------------------------------------------+
7   | This source file is subject to version 3.01 of the PHP license,      |
8   | that is bundled with this package in the file LICENSE, and is        |
9   | available through the world-wide-web at the following url:           |
10   | http://www.php.net/license/3_01.txt                                  |
11   | If you did not receive a copy of the PHP license and are unable to   |
12   | obtain it through the world-wide-web, please send a note to          |
13   | license@php.net so we can mail you a copy immediately.               |
14   +----------------------------------------------------------------------+
15   | Authors: Georg Richter <georg@php.net>                               |
16   |          Andrey Hristov <andrey@php.net>                             |
17   |          Ulf Wendel <uw@php.net>                                     |
18   +----------------------------------------------------------------------+
19 */
20 
21 #ifdef HAVE_CONFIG_H
22 #include "config.h"
23 #endif
24 
25 #include <signal.h>
26 
27 #include "php.h"
28 #include "php_ini.h"
29 #include "ext/standard/info.h"
30 #include "php_mysqli_structs.h"
31 #include "mysqli_fe.h"
32 #include "mysqli_priv.h"
33 
34 #ifdef MYSQLI_USE_FULL_TYPED_ARGINFO_0
35 #define MYSQLI_ZEND_ARG_OBJ_INFO_LINK() ZEND_ARG_OBJ_INFO(0, link, mysqli, 0)
36 #define MYSQLI_ZEND_ARG_OBJ_INFO_RESULT() ZEND_ARG_OBJ_INFO(0, result, mysqli_result, 0)
37 #define MYSQLI_ZEND_ARG_OBJ_INFO_STMT() ZEND_ARG_OBJ_INFO(0, stmt, mysqli_stmt, 0)
38 #else
39 #define MYSQLI_ZEND_ARG_OBJ_INFO_LINK() ZEND_ARG_INFO(0, link)
40 #define MYSQLI_ZEND_ARG_OBJ_INFO_RESULT() ZEND_ARG_INFO(0, result)
41 #define MYSQLI_ZEND_ARG_OBJ_INFO_STMT() ZEND_ARG_INFO(0, stmt)
42 #endif
43 
44 ZEND_BEGIN_ARG_INFO(arginfo_mysqli_stmt_bind_result, 0)
45 	MYSQLI_ZEND_ARG_OBJ_INFO_STMT()
46 	ZEND_ARG_VARIADIC_INFO(1, vars)
47 ZEND_END_ARG_INFO()
48 
49 ZEND_BEGIN_ARG_INFO(arginfo_mysqli_stmt_bind_param, 0)
50 	MYSQLI_ZEND_ARG_OBJ_INFO_STMT()
51 	ZEND_ARG_INFO(0, types)
52 	ZEND_ARG_VARIADIC_INFO(1, vars)
53 ZEND_END_ARG_INFO()
54 
55 ZEND_BEGIN_ARG_INFO(arginfo_class_mysqli_stmt_bind_result, 0)
56 	ZEND_ARG_VARIADIC_INFO(1, vars)
57 ZEND_END_ARG_INFO()
58 
59 ZEND_BEGIN_ARG_INFO(arginfo_class_mysqli_stmt_bind_param, 0)
60 	ZEND_ARG_INFO(0, types)
61 	ZEND_ARG_VARIADIC_INFO(1, vars)
62 ZEND_END_ARG_INFO()
63 
64 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_poll, 0, 0, 4)
65 	ZEND_ARG_ARRAY_INFO(1, read, 1)
66 	ZEND_ARG_ARRAY_INFO(1, write, 1)
67 	ZEND_ARG_ARRAY_INFO(1, error, 1)
68 	ZEND_ARG_INFO(0, sec)
69 	ZEND_ARG_INFO(0, usec)
70 ZEND_END_ARG_INFO()
71 
72 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_no_params, 0, 0, 0)
73 ZEND_END_ARG_INFO()
74 
75 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_only_link, 0, 0, 1)
76 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
77 ZEND_END_ARG_INFO()
78 
79 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_autocommit, 0, 0, 2)
80 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
81 	ZEND_ARG_INFO(0, mode)
82 ZEND_END_ARG_INFO()
83 
84 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_autocommit, 0, 0, 1)
85 	ZEND_ARG_INFO(0, mode)
86 ZEND_END_ARG_INFO()
87 
88 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_begin_transaction, 0, 0, 1)
89 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
90 	ZEND_ARG_INFO(0, flags)
91 	ZEND_ARG_INFO(0, name)
92 ZEND_END_ARG_INFO()
93 
94 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_begin_transaction, 0, 0, 0)
95 	ZEND_ARG_INFO(0, flags)
96 	ZEND_ARG_INFO(0, name)
97 ZEND_END_ARG_INFO()
98 
99 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_savepoint, 0, 0, 2)
100 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
101 	ZEND_ARG_INFO(0, name)
102 ZEND_END_ARG_INFO()
103 
104 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_savepoint, 0, 0, 1)
105 	ZEND_ARG_INFO(0, name)
106 ZEND_END_ARG_INFO()
107 
108 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_release_savepoint, 0, 0, 2)
109 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
110 	ZEND_ARG_INFO(0, name)
111 ZEND_END_ARG_INFO()
112 
113 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_release_savepoint, 0, 0, 1)
114 	ZEND_ARG_INFO(0, name)
115 ZEND_END_ARG_INFO()
116 
117 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_commit, 0, 0, 1)
118 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
119 	ZEND_ARG_INFO(0, flags)
120 	ZEND_ARG_INFO(0, name)
121 ZEND_END_ARG_INFO()
122 
123 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_commit, 0, 0, 0)
124 	ZEND_ARG_INFO(0, flags)
125 	ZEND_ARG_INFO(0, name)
126 ZEND_END_ARG_INFO()
127 
128 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_rollback, 0, 0, 1)
129 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
130 	ZEND_ARG_INFO(0, flags)
131 	ZEND_ARG_INFO(0, name)
132 ZEND_END_ARG_INFO()
133 
134 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_rollback, 0, 0, 0)
135 	ZEND_ARG_INFO(0, flags)
136 	ZEND_ARG_INFO(0, name)
137 ZEND_END_ARG_INFO()
138 
139 
140 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_store_result, 0, 0, 1)
141 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
142 	ZEND_ARG_INFO(0, flags)
143 ZEND_END_ARG_INFO()
144 
145 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_store_result, 0, 0, 0)
146 	ZEND_ARG_INFO(0, flags)
147 ZEND_END_ARG_INFO()
148 
149 
150 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_change_user, 0, 0, 4)
151 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
152 	ZEND_ARG_INFO(0, user)
153 	ZEND_ARG_INFO(0, password)
154 	ZEND_ARG_INFO(0, database)
155 ZEND_END_ARG_INFO()
156 
157 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_change_user, 0, 0, 3)
158 	ZEND_ARG_INFO(0, user)
159 	ZEND_ARG_INFO(0, password)
160 	ZEND_ARG_INFO(0, database)
161 ZEND_END_ARG_INFO()
162 
163 
164 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_connect, 0, 0, 0)
165 	ZEND_ARG_INFO(0, host)
166 	ZEND_ARG_INFO(0, user)
167 	ZEND_ARG_INFO(0, password)
168 	ZEND_ARG_INFO(0, database)
169 	ZEND_ARG_INFO(0, port)
170 	ZEND_ARG_INFO(0, socket)
171 ZEND_END_ARG_INFO()
172 
173 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_real_connect, 0, 0, 1)
174 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
175 	ZEND_ARG_INFO(0, host)
176 	ZEND_ARG_INFO(0, user)
177 	ZEND_ARG_INFO(0, password)
178 	ZEND_ARG_INFO(0, database)
179 	ZEND_ARG_INFO(0, port)
180 	ZEND_ARG_INFO(0, socket)
181 	ZEND_ARG_INFO(0, flags)
182 ZEND_END_ARG_INFO()
183 
184 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_real_connect, 0, 0, 0)
185 	ZEND_ARG_INFO(0, host)
186 	ZEND_ARG_INFO(0, user)
187 	ZEND_ARG_INFO(0, password)
188 	ZEND_ARG_INFO(0, database)
189 	ZEND_ARG_INFO(0, port)
190 	ZEND_ARG_INFO(0, socket)
191 	ZEND_ARG_INFO(0, flags)
192 ZEND_END_ARG_INFO()
193 
194 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_only_result, 0, 0, 1)
195 	MYSQLI_ZEND_ARG_OBJ_INFO_RESULT()
196 ZEND_END_ARG_INFO()
197 
198 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_only_statement, 0, 0, 1)
199 	MYSQLI_ZEND_ARG_OBJ_INFO_STMT()
200 ZEND_END_ARG_INFO()
201 
202 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_data_seek, 0, 0, 2)
203 	MYSQLI_ZEND_ARG_OBJ_INFO_RESULT()
204 	ZEND_ARG_INFO(0, offset)
205 ZEND_END_ARG_INFO()
206 
207 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_stmt_data_seek, 0, 0, 2)
208 	MYSQLI_ZEND_ARG_OBJ_INFO_STMT()
209 	ZEND_ARG_INFO(0, offset)
210 ZEND_END_ARG_INFO()
211 
212 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_data_seek, 0, 0, 1)
213 	ZEND_ARG_INFO(0, offset)
214 ZEND_END_ARG_INFO()
215 
216 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_debug, 0, 0, 1)
217 	ZEND_ARG_INFO(0, debug_options)
218 ZEND_END_ARG_INFO()
219 
220 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_result_and_fieldnr, 0, 0, 2)
221 	MYSQLI_ZEND_ARG_OBJ_INFO_RESULT()
222 	ZEND_ARG_INFO(0, field_nr)
223 ZEND_END_ARG_INFO()
224 
225 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_result_and_fieldnr, 0, 0, 1)
226 	ZEND_ARG_INFO(0, field_nr)
227 ZEND_END_ARG_INFO()
228 
229 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_fetch_array, 0, 0, 1)
230 	MYSQLI_ZEND_ARG_OBJ_INFO_RESULT()
231 	ZEND_ARG_INFO(0, result_type)
232 ZEND_END_ARG_INFO()
233 
234 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_fetch_array, 0, 0, 0)
235 	ZEND_ARG_INFO(0, result_type)
236 ZEND_END_ARG_INFO()
237 
238 
239 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_fetch_object, 0, 0, 1)
240 	MYSQLI_ZEND_ARG_OBJ_INFO_RESULT()
241 	ZEND_ARG_INFO(0, class_name)
242 	ZEND_ARG_ARRAY_INFO(0, params, 0)
243 ZEND_END_ARG_INFO()
244 
245 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_fetch_object, 0, 0, 0)
246 	ZEND_ARG_INFO(0, class_name)
247 	ZEND_ARG_ARRAY_INFO(0, params, 0)
248 ZEND_END_ARG_INFO()
249 
250 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_kill, 0, 0, 2)
251 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
252 	ZEND_ARG_INFO(0, connection_id)
253 ZEND_END_ARG_INFO()
254 
255 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_kill, 0, 0, 1)
256 	ZEND_ARG_INFO(0, connection_id)
257 ZEND_END_ARG_INFO()
258 
259 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_query, 0, 0, 2)
260 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
261 	ZEND_ARG_INFO(0, query)
262 	ZEND_ARG_INFO(0, resultmode)
263 ZEND_END_ARG_INFO()
264 
265 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_multi_query, 0, 0, 1)
266 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
267 	ZEND_ARG_INFO(0, query)
268 ZEND_END_ARG_INFO()
269 
270 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_real_query, 0, 0, 1)
271 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
272 	ZEND_ARG_INFO(0, query)
273 ZEND_END_ARG_INFO()
274 
275 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_prepare, 0, 0, 2)
276 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
277 	ZEND_ARG_INFO(0, query)
278 ZEND_END_ARG_INFO()
279 
280 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_stmt_prepare, 0, 0, 2)
281 	MYSQLI_ZEND_ARG_OBJ_INFO_STMT()
282 	ZEND_ARG_INFO(0, query)
283 ZEND_END_ARG_INFO()
284 
285 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_query, 0, 0, 1)
286 	ZEND_ARG_INFO(0, query)
287 	ZEND_ARG_INFO(0, resultmode)
288 ZEND_END_ARG_INFO()
289 
290 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_prepare, 0, 0, 1)
291 	ZEND_ARG_INFO(0, query)
292 ZEND_END_ARG_INFO()
293 
294 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_multi_query, 0, 0, 1)
295 	ZEND_ARG_INFO(0, query)
296 ZEND_END_ARG_INFO()
297 
298 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_real_query, 0, 0, 1)
299 	ZEND_ARG_INFO(0, query)
300 ZEND_END_ARG_INFO()
301 
302 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_options, 0, 0, 3)
303 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
304 	ZEND_ARG_INFO(0, option)
305 	ZEND_ARG_INFO(0, value)
306 ZEND_END_ARG_INFO()
307 
308 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_options, 0, 0, 2)
309 	ZEND_ARG_INFO(0, option)
310 	ZEND_ARG_INFO(0, value)
311 ZEND_END_ARG_INFO()
312 
313 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_report, 0, 0, 1)
314 	ZEND_ARG_INFO(0, flags)
315 ZEND_END_ARG_INFO()
316 
317 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_real_escape_string, 0, 0, 2)
318 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
319 	ZEND_ARG_INFO(0, string_to_escape)
320 ZEND_END_ARG_INFO()
321 
322 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_real_escape_string, 0, 0, 1)
323 	ZEND_ARG_INFO(0, string_to_escape)
324 ZEND_END_ARG_INFO()
325 
326 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_select_db, 0, 0, 2)
327 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
328 	ZEND_ARG_INFO(0, database)
329 ZEND_END_ARG_INFO()
330 
331 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_select_db, 0, 0, 1)
332 	ZEND_ARG_INFO(0, database)
333 ZEND_END_ARG_INFO()
334 
335 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_set_charset, 0, 0, 2)
336 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
337 	ZEND_ARG_INFO(0, charset)
338 ZEND_END_ARG_INFO()
339 
340 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_set_charset, 0, 0, 1)
341 	ZEND_ARG_INFO(0, charset)
342 ZEND_END_ARG_INFO()
343 
344 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_stmt_attr_get, 0, 0, 2)
345 	MYSQLI_ZEND_ARG_OBJ_INFO_STMT()
346 	ZEND_ARG_INFO(0, attribute)
347 ZEND_END_ARG_INFO()
348 
349 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_stmt_attr_get, 0, 0, 1)
350 	ZEND_ARG_INFO(0, attribute)
351 ZEND_END_ARG_INFO()
352 
353 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_stmt_attr_set, 0, 0, 3)
354 	MYSQLI_ZEND_ARG_OBJ_INFO_STMT()
355 	ZEND_ARG_INFO(0, attribute)
356 	ZEND_ARG_INFO(0, value)
357 ZEND_END_ARG_INFO()
358 
359 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_stmt_attr_set, 0, 0, 2)
360 	ZEND_ARG_INFO(0, attribute)
361 	ZEND_ARG_INFO(0, value)
362 ZEND_END_ARG_INFO()
363 
364 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_stmt_send_long_data, 0, 0, 3)
365 	MYSQLI_ZEND_ARG_OBJ_INFO_STMT()
366 	ZEND_ARG_INFO(0, param_nr)
367 	ZEND_ARG_INFO(0, data)
368 ZEND_END_ARG_INFO()
369 
370 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_stmt_send_long_data, 0, 0, 2)
371 	ZEND_ARG_INFO(0, param_nr)
372 	ZEND_ARG_INFO(0, data)
373 ZEND_END_ARG_INFO()
374 
375 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_ssl_set, 0, 0, 6)
376 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
377 	ZEND_ARG_INFO(0, key)
378 	ZEND_ARG_INFO(0, cert)
379 	ZEND_ARG_INFO(0, certificate_authority)
380 	ZEND_ARG_INFO(0, certificate_authority_path)
381 	ZEND_ARG_INFO(0, cipher)
382 ZEND_END_ARG_INFO()
383 
384 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_ssl_set, 0, 0, 5)
385 	ZEND_ARG_INFO(0, key)
386 	ZEND_ARG_INFO(0, cert)
387 	ZEND_ARG_INFO(0, certificate_authority)
388 	ZEND_ARG_INFO(0, certificate_authority_path)
389 	ZEND_ARG_INFO(0, cipher)
390 ZEND_END_ARG_INFO()
391 
392 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_refresh, 0, 0, 2)
393 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
394 	ZEND_ARG_INFO(0, options)
395 ZEND_END_ARG_INFO()
396 
397 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_refresh, 0, 0, 1)
398 	ZEND_ARG_INFO(0, options)
399 ZEND_END_ARG_INFO()
400 
401 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_no_options, 0, 0, 0)
402 ZEND_END_ARG_INFO()
403 
404 
405 /* {{{ mysqli_functions[]
406  *
407  * Every user visible function must have an entry in mysqli_functions[].
408  */
409 const zend_function_entry mysqli_functions[] = {
410 	PHP_FE(mysqli_affected_rows,						arginfo_mysqli_only_link)
411 	PHP_FE(mysqli_autocommit,							arginfo_mysqli_autocommit)
412 	PHP_FE(mysqli_begin_transaction,					arginfo_mysqli_begin_transaction)
413 	PHP_FE(mysqli_change_user,							arginfo_mysqli_change_user)
414 	PHP_FE(mysqli_character_set_name,					arginfo_mysqli_only_link)
415 	PHP_FE(mysqli_close,								arginfo_mysqli_only_link)
416 	PHP_FE(mysqli_commit,								arginfo_mysqli_commit)
417 	PHP_FE(mysqli_connect, 								arginfo_mysqli_connect)
418 	PHP_FE(mysqli_connect_errno,						arginfo_mysqli_no_params)
419 	PHP_FE(mysqli_connect_error,						arginfo_mysqli_no_params)
420 	PHP_FE(mysqli_data_seek,							arginfo_mysqli_data_seek)
421 	PHP_FE(mysqli_dump_debug_info,						arginfo_mysqli_only_link)
422 	PHP_FE(mysqli_debug,								arginfo_mysqli_debug)
423 	PHP_FE(mysqli_errno,								arginfo_mysqli_only_link)
424 	PHP_FE(mysqli_error,								arginfo_mysqli_only_link)
425 	PHP_FE(mysqli_error_list,							arginfo_mysqli_only_link)
426 	PHP_FE(mysqli_stmt_execute,							arginfo_mysqli_only_statement)
427 	PHP_FALIAS(mysqli_execute, mysqli_stmt_execute,		arginfo_mysqli_only_statement)
428 	PHP_FE(mysqli_fetch_field,							arginfo_mysqli_only_result)
429 	PHP_FE(mysqli_fetch_fields,							arginfo_mysqli_only_result)
430 	PHP_FE(mysqli_fetch_field_direct,					arginfo_mysqli_result_and_fieldnr)
431 	PHP_FE(mysqli_fetch_lengths,						arginfo_mysqli_only_result)
432 #ifdef MYSQLI_USE_MYSQLND
433 	PHP_FE(mysqli_fetch_all,							arginfo_mysqli_fetch_array)
434 #endif
435 	PHP_FE(mysqli_fetch_array,							arginfo_mysqli_fetch_array)
436 	PHP_FE(mysqli_fetch_assoc,							arginfo_mysqli_only_result)
437 	PHP_FE(mysqli_fetch_object,							arginfo_mysqli_fetch_object)
438 	PHP_FE(mysqli_fetch_row,							arginfo_mysqli_only_result)
439 	PHP_FE(mysqli_field_count,							arginfo_mysqli_only_link)
440 	PHP_FE(mysqli_field_seek,							arginfo_mysqli_result_and_fieldnr)
441 	PHP_FE(mysqli_field_tell,							arginfo_mysqli_only_result)
442 	PHP_FE(mysqli_free_result,							arginfo_mysqli_only_result)
443 #if defined(MYSQLI_USE_MYSQLND)
444 	PHP_FE(mysqli_get_connection_stats,					arginfo_mysqli_only_link)
445 	PHP_FE(mysqli_get_client_stats,						arginfo_mysqli_no_params)
446 #endif
447 #ifdef HAVE_MYSQLI_GET_CHARSET
448 	PHP_FE(mysqli_get_charset,							arginfo_mysqli_only_link)
449 #endif
450 	PHP_FE(mysqli_get_client_info,						arginfo_mysqli_no_options)
451 	PHP_FE(mysqli_get_client_version,					arginfo_mysqli_no_options)
452 	PHP_FE(mysqli_get_links_stats,						arginfo_mysqli_no_options)
453 	PHP_FE(mysqli_get_host_info,						arginfo_mysqli_only_link)
454 	PHP_FE(mysqli_get_proto_info,						arginfo_mysqli_only_link)
455 	PHP_FE(mysqli_get_server_info,						arginfo_mysqli_only_link)
456 	PHP_FE(mysqli_get_server_version,					arginfo_mysqli_only_link)
457 	PHP_FE(mysqli_get_warnings,							arginfo_mysqli_only_link)
458 	PHP_FE(mysqli_init, 								arginfo_mysqli_no_params)
459 	PHP_FE(mysqli_info,									arginfo_mysqli_only_link)
460 	PHP_FE(mysqli_insert_id,							arginfo_mysqli_only_link)
461 	PHP_FE(mysqli_kill,									arginfo_mysqli_kill)
462 	PHP_FE(mysqli_more_results,							arginfo_mysqli_only_link)
463 	PHP_FE(mysqli_multi_query, 							arginfo_mysqli_multi_query)
464 	PHP_FE(mysqli_next_result,							arginfo_mysqli_only_link)
465 	PHP_FE(mysqli_num_fields,							arginfo_mysqli_only_result)
466 	PHP_FE(mysqli_num_rows,								arginfo_mysqli_only_result)
467 	PHP_FE(mysqli_options, 								arginfo_mysqli_options)
468 	PHP_FE(mysqli_ping,									arginfo_mysqli_only_link)
469 #if defined(MYSQLI_USE_MYSQLND)
470 	PHP_FE(mysqli_poll,									arginfo_mysqli_poll)
471 #endif
472 	PHP_FE(mysqli_prepare,								arginfo_mysqli_prepare)
473 	PHP_FE(mysqli_report,								arginfo_mysqli_report)
474 	PHP_FE(mysqli_query,								arginfo_mysqli_query)
475 	PHP_FE(mysqli_real_connect,							arginfo_mysqli_real_connect)
476 	PHP_FE(mysqli_real_escape_string,					arginfo_mysqli_real_escape_string)
477 	PHP_FE(mysqli_real_query,							arginfo_mysqli_real_query)
478 #if defined(MYSQLI_USE_MYSQLND)
479 	PHP_FE(mysqli_reap_async_query,						arginfo_mysqli_only_link)
480 #endif
481 	PHP_FE(mysqli_release_savepoint,					arginfo_mysqli_release_savepoint)
482 	PHP_FE(mysqli_rollback,								arginfo_mysqli_rollback)
483 	PHP_FE(mysqli_savepoint,							arginfo_mysqli_savepoint)
484 	PHP_FE(mysqli_select_db,							arginfo_mysqli_select_db)
485 #ifdef HAVE_MYSQLI_SET_CHARSET
486 	PHP_FE(mysqli_set_charset,							arginfo_mysqli_set_charset)
487 #endif
488 	PHP_FE(mysqli_stmt_affected_rows,					arginfo_mysqli_only_statement)
489 	PHP_FE(mysqli_stmt_attr_get,						arginfo_mysqli_stmt_attr_get)
490 	PHP_FE(mysqli_stmt_attr_set,						arginfo_mysqli_stmt_attr_set)
491 	PHP_FE(mysqli_stmt_bind_param,						arginfo_mysqli_stmt_bind_param)
492 	PHP_FE(mysqli_stmt_bind_result,						arginfo_mysqli_stmt_bind_result)
493 	PHP_FE(mysqli_stmt_close,							arginfo_mysqli_only_statement)
494 	PHP_FE(mysqli_stmt_data_seek,						arginfo_mysqli_stmt_data_seek)
495 	PHP_FE(mysqli_stmt_errno,							arginfo_mysqli_only_statement)
496 	PHP_FE(mysqli_stmt_error,							arginfo_mysqli_only_statement)
497 	PHP_FE(mysqli_stmt_error_list,						arginfo_mysqli_only_statement)
498 	PHP_FE(mysqli_stmt_fetch,							arginfo_mysqli_only_statement)
499 	PHP_FE(mysqli_stmt_field_count,						arginfo_mysqli_only_statement)
500 	PHP_FE(mysqli_stmt_free_result,						arginfo_mysqli_only_statement)
501 #if defined(MYSQLI_USE_MYSQLND)
502 	PHP_FE(mysqli_stmt_get_result,						arginfo_mysqli_only_statement)
503 #endif
504 	PHP_FE(mysqli_stmt_get_warnings,					arginfo_mysqli_only_statement)
505 	PHP_FE(mysqli_stmt_init,							arginfo_mysqli_only_link)
506 	PHP_FE(mysqli_stmt_insert_id,						arginfo_mysqli_only_statement)
507 #if defined(MYSQLI_USE_MYSQLND)
508 	PHP_FE(mysqli_stmt_more_results,					arginfo_mysqli_only_statement)
509 	PHP_FE(mysqli_stmt_next_result,						arginfo_mysqli_only_statement)
510 #endif
511 	PHP_FE(mysqli_stmt_num_rows,						arginfo_mysqli_only_statement)
512 	PHP_FE(mysqli_stmt_param_count,						arginfo_mysqli_only_statement)
513 	PHP_FE(mysqli_stmt_prepare,							arginfo_mysqli_stmt_prepare)
514 	PHP_FE(mysqli_stmt_reset,							arginfo_mysqli_only_statement)
515 	PHP_FE(mysqli_stmt_result_metadata,					arginfo_mysqli_only_statement)
516 	PHP_FE(mysqli_stmt_send_long_data,					arginfo_mysqli_stmt_send_long_data)
517 	PHP_FE(mysqli_stmt_store_result,					arginfo_mysqli_only_statement)
518 	PHP_FE(mysqli_stmt_sqlstate,   						arginfo_mysqli_only_statement)
519 	PHP_FE(mysqli_sqlstate,   							arginfo_mysqli_only_link)
520 	PHP_FE(mysqli_ssl_set,								arginfo_mysqli_ssl_set)
521 	PHP_FE(mysqli_stat,									arginfo_mysqli_only_link)
522 	PHP_FE(mysqli_store_result,							arginfo_mysqli_store_result)
523 	PHP_FE(mysqli_thread_id,							arginfo_mysqli_only_link)
524 	PHP_FE(mysqli_thread_safe,							arginfo_mysqli_no_params)
525 	PHP_FE(mysqli_use_result,							arginfo_mysqli_only_link)
526 	PHP_FE(mysqli_warning_count,						arginfo_mysqli_only_link)
527 
528 	PHP_FE(mysqli_refresh,								arginfo_mysqli_refresh)
529 
530 	/* Aliases */
531 	PHP_FALIAS(mysqli_escape_string,	mysqli_real_escape_string,	arginfo_mysqli_query)
532 	PHP_FALIAS(mysqli_set_opt,			mysqli_options,				NULL)
533 
534 	PHP_FE_END
535 };
536 /* }}} */
537 
538 /* {{{ mysqli_link_methods[]
539  *
540  * Every user visible function must have an entry in mysqli_functions[].
541  */
542 const zend_function_entry mysqli_link_methods[] = {
543 	PHP_FALIAS(autocommit, mysqli_autocommit, arginfo_class_mysqli_autocommit)
544 	PHP_FALIAS(begin_transaction, mysqli_begin_transaction, arginfo_class_mysqli_begin_transaction)
545 	PHP_FALIAS(change_user,mysqli_change_user, arginfo_class_mysqli_change_user)
546 	PHP_FALIAS(character_set_name, mysqli_character_set_name, arginfo_mysqli_no_params)
547 	PHP_FALIAS(close, mysqli_close, arginfo_mysqli_no_params)
548 	PHP_FALIAS(commit, mysqli_commit, arginfo_class_mysqli_commit)
549 	PHP_FALIAS(connect, mysqli_connect, arginfo_mysqli_connect)
550 	PHP_FALIAS(dump_debug_info, mysqli_dump_debug_info, arginfo_mysqli_no_params)
551 	PHP_FALIAS(debug, mysqli_debug, arginfo_mysqli_debug)
552 #ifdef HAVE_MYSQLI_GET_CHARSET
553 	PHP_FALIAS(get_charset, mysqli_get_charset, arginfo_mysqli_no_params)
554 #endif
555 	PHP_FALIAS(get_client_info, mysqli_get_client_info, arginfo_mysqli_no_params)
556 #if defined(MYSQLI_USE_MYSQLND)
557 	PHP_FALIAS(get_connection_stats, mysqli_get_connection_stats, arginfo_mysqli_no_params)
558 #endif
559 	PHP_FALIAS(get_server_info, mysqli_get_server_info, arginfo_mysqli_no_params)
560 	PHP_FALIAS(get_warnings, mysqli_get_warnings, arginfo_mysqli_no_params)
561 	PHP_FALIAS(init,mysqli_init_method, arginfo_mysqli_no_params)
562 	PHP_FALIAS(kill,mysqli_kill, arginfo_class_mysqli_kill)
563 	PHP_FALIAS(multi_query, mysqli_multi_query, arginfo_class_mysqli_multi_query)
564 	PHP_FALIAS(__construct, mysqli_link_construct, arginfo_mysqli_connect)
565 	PHP_FALIAS(more_results, mysqli_more_results, arginfo_mysqli_no_params)
566 	PHP_FALIAS(next_result, mysqli_next_result, arginfo_mysqli_no_params)
567 	PHP_FALIAS(options, mysqli_options, arginfo_class_mysqli_options)
568 	PHP_FALIAS(ping, mysqli_ping, arginfo_mysqli_no_params)
569 #if defined(MYSQLI_USE_MYSQLND)
570 	ZEND_FENTRY(poll, ZEND_FN(mysqli_poll), arginfo_mysqli_poll, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
571 #endif
572 	PHP_FALIAS(prepare, mysqli_prepare, arginfo_class_mysqli_prepare)
573 	PHP_FALIAS(query, mysqli_query, arginfo_class_mysqli_query)
574 	PHP_FALIAS(real_connect, mysqli_real_connect, arginfo_class_mysqli_real_connect)
575 	PHP_FALIAS(real_escape_string, mysqli_real_escape_string, arginfo_class_mysqli_real_escape_string)
576 #if defined(MYSQLI_USE_MYSQLND)
577 	PHP_FALIAS(reap_async_query, mysqli_reap_async_query, arginfo_mysqli_no_params)
578 #endif
579 	PHP_FALIAS(escape_string, mysqli_real_escape_string, arginfo_class_mysqli_real_escape_string)
580 	PHP_FALIAS(real_query, mysqli_real_query, arginfo_class_mysqli_real_query)
581 	PHP_FALIAS(release_savepoint, mysqli_release_savepoint, arginfo_class_mysqli_release_savepoint)
582 	PHP_FALIAS(rollback, mysqli_rollback, arginfo_class_mysqli_rollback)
583 	PHP_FALIAS(savepoint, mysqli_savepoint, arginfo_class_mysqli_savepoint)
584 	PHP_FALIAS(select_db,mysqli_select_db, arginfo_class_mysqli_select_db)
585 #ifdef HAVE_MYSQLI_SET_CHARSET
586 	PHP_FALIAS(set_charset, mysqli_set_charset, arginfo_class_mysqli_set_charset)
587 #endif
588 	PHP_FALIAS(set_opt, mysqli_options, arginfo_class_mysqli_options)
589 	PHP_FALIAS(ssl_set, mysqli_ssl_set, arginfo_class_mysqli_ssl_set)
590 	PHP_FALIAS(stat, mysqli_stat, arginfo_mysqli_no_params)
591 	PHP_FALIAS(stmt_init, mysqli_stmt_init, arginfo_mysqli_no_params)
592 	PHP_FALIAS(store_result, mysqli_store_result, arginfo_class_store_result)
593 	PHP_FALIAS(thread_safe, mysqli_thread_safe, arginfo_mysqli_no_params)
594 	PHP_FALIAS(use_result, mysqli_use_result, arginfo_mysqli_no_params)
595 	PHP_FALIAS(refresh,mysqli_refresh, arginfo_class_mysqli_refresh)
596 	PHP_FE_END
597 };
598 /* }}} */
599 
600 /* {{{ mysqli_result_methods[]
601  *
602  * Every user visible function must have an entry in mysqli_result_functions[].
603  */
604 const zend_function_entry mysqli_result_methods[] = {
605 	PHP_FALIAS(__construct, mysqli_result_construct, NULL)
606 	PHP_FALIAS(close, mysqli_free_result, arginfo_mysqli_no_params)
607 	PHP_FALIAS(free, mysqli_free_result, arginfo_mysqli_no_params)
608 	PHP_FALIAS(data_seek, mysqli_data_seek, arginfo_class_mysqli_data_seek)
609 	PHP_FALIAS(fetch_field, mysqli_fetch_field, arginfo_mysqli_no_params)
610 	PHP_FALIAS(fetch_fields, mysqli_fetch_fields, arginfo_mysqli_no_params)
611 	PHP_FALIAS(fetch_field_direct, mysqli_fetch_field_direct, arginfo_class_mysqli_result_and_fieldnr)
612 #if defined(MYSQLI_USE_MYSQLND)
613 	PHP_FALIAS(fetch_all, mysqli_fetch_all, arginfo_class_mysqli_fetch_array)
614 #endif
615 	PHP_FALIAS(fetch_array, mysqli_fetch_array, arginfo_class_mysqli_fetch_array)
616 	PHP_FALIAS(fetch_assoc, mysqli_fetch_assoc, arginfo_mysqli_no_params)
617 	PHP_FALIAS(fetch_object,mysqli_fetch_object, arginfo_class_mysqli_fetch_object)
618 	PHP_FALIAS(fetch_row, mysqli_fetch_row, arginfo_mysqli_no_params)
619 	PHP_FALIAS(field_seek, mysqli_field_seek, arginfo_class_mysqli_result_and_fieldnr)
620 	PHP_FALIAS(free_result, mysqli_free_result, arginfo_mysqli_no_params)
621 	PHP_FE_END
622 };
623 /* }}} */
624 
625 /* {{{ mysqli_stmt_methods[]
626  *
627  * Every user visible function must have an entry in mysqli_stmt_functions[].
628  */
629 const zend_function_entry mysqli_stmt_methods[] = {
630 	PHP_FALIAS(__construct, mysqli_stmt_construct, NULL)
631 	PHP_FALIAS(attr_get, mysqli_stmt_attr_get, arginfo_class_mysqli_stmt_attr_get)
632 	PHP_FALIAS(attr_set,mysqli_stmt_attr_set, arginfo_class_mysqli_stmt_attr_set)
633 	PHP_FALIAS(bind_param,mysqli_stmt_bind_param, arginfo_class_mysqli_stmt_bind_param)
634 	PHP_FALIAS(bind_result,mysqli_stmt_bind_result, arginfo_class_mysqli_stmt_bind_result)
635 	PHP_FALIAS(close, mysqli_stmt_close, arginfo_mysqli_no_params)
636 	PHP_FALIAS(data_seek, mysqli_stmt_data_seek, arginfo_class_mysqli_data_seek)
637 	PHP_FALIAS(execute, mysqli_stmt_execute, arginfo_mysqli_no_params)
638 	PHP_FALIAS(fetch, mysqli_stmt_fetch, arginfo_mysqli_no_params)
639 	PHP_FALIAS(get_warnings, mysqli_stmt_get_warnings,	arginfo_mysqli_no_params)
640 	PHP_FALIAS(result_metadata, mysqli_stmt_result_metadata, arginfo_mysqli_no_params)
641 #if defined(MYSQLI_USE_MYSQLND)
642 	PHP_FALIAS(more_results, mysqli_stmt_more_results, arginfo_mysqli_no_params)
643 	PHP_FALIAS(next_result, mysqli_stmt_next_result, arginfo_mysqli_no_params)
644 #endif
645 	PHP_FALIAS(num_rows, mysqli_stmt_num_rows, arginfo_mysqli_no_params)
646 	PHP_FALIAS(send_long_data, mysqli_stmt_send_long_data, arginfo_class_mysqli_stmt_send_long_data)
647 	PHP_FALIAS(free_result, mysqli_stmt_free_result, arginfo_mysqli_no_params)
648 	PHP_FALIAS(reset, mysqli_stmt_reset, arginfo_mysqli_no_params)
649 	PHP_FALIAS(prepare, mysqli_stmt_prepare, arginfo_class_mysqli_prepare)
650 	PHP_FALIAS(store_result, mysqli_stmt_store_result, arginfo_mysqli_no_params)
651 #if defined(MYSQLI_USE_MYSQLND)
652 	PHP_FALIAS(get_result, mysqli_stmt_get_result, arginfo_mysqli_no_params)
653 #endif
654 	PHP_FE_END
655 };
656 /* }}} */
657