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