1--TEST--
2mysqli_stmt_attr_get()
3--SKIPIF--
4<?php
5require_once('skipif.inc');
6require_once('skipifemb.inc');
7require_once('skipifconnectfailure.inc');
8?>
9--FILE--
10<?php
11	require_once("connect.inc");
12
13	$tmp    = NULL;
14	$link   = NULL;
15
16	if (!is_null($tmp = @mysqli_stmt_attr_get()))
17		printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
18
19	if (!is_null($tmp = @mysqli_stmt_attr_get($link)))
20		printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
21
22	if (!is_null($tmp = @mysqli_stmt_attr_get($link, $link)))
23		printf("[003] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
24
25	require('table.inc');
26
27	if (!is_null($tmp = @mysqli_stmt_attr_get($link, $link)))
28		printf("[004] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
29
30	$valid_attr = array("max_length" => MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
31	if (mysqli_get_client_version() > 50003)
32		$valid_attr["cursor_type"] = MYSQLI_STMT_ATTR_CURSOR_TYPE;
33
34	if ($IS_MYSQLND && mysqli_get_client_version() > 50007)
35		$valid_attr["prefetch_rows"] = MYSQLI_STMT_ATTR_PREFETCH_ROWS;
36
37	do {
38		$invalid_attr = mt_rand(0, 10000);
39	} while (in_array($invalid_attr, $valid_attr));
40
41	$stmt = mysqli_stmt_init($link);
42	mysqli_stmt_prepare($stmt, 'SELECT * FROM test');
43	if (false !== ($tmp = @mysqli_stmt_attr_get($stmt, $invalid_attr)))
44		printf("[005] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp);
45
46	foreach ($valid_attr as $k => $attr) {
47		if (false === ($tmp = mysqli_stmt_attr_get($stmt, $attr))) {
48			printf("[006] Expecting any type, but not boolean/false, got %s/%s for attribute %s/%s\n",
49				gettype($tmp), $tmp, $k, $attr);
50		}
51	}
52
53	$stmt->close();
54
55	foreach ($valid_attr as $k => $attr) {
56		if (false !== ($tmp = @mysqli_stmt_attr_get($stmt, $attr))) {
57			printf("[007] Expecting false, got %s/%s for attribute %s/%s\n",
58				gettype($tmp), $tmp, $k, $attr);
59		}
60	}
61
62	mysqli_close($link);
63	print "done!";
64?>
65--CLEAN--
66<?php
67	require_once("clean_table.inc");
68?>
69--EXPECT--
70done!
71