1--TEST--
2mysqli_stmt_attr_get()
3--EXTENSIONS--
4mysqli
5--SKIPIF--
6<?php
7require_once 'skipifconnectfailure.inc';
8?>
9--FILE--
10<?php
11    require 'table.inc';
12
13    $valid_attr = array(
14        MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH,
15        MYSQLI_STMT_ATTR_CURSOR_TYPE,
16    );
17
18    $stmt = mysqli_stmt_init($link);
19    mysqli_stmt_prepare($stmt, 'SELECT * FROM test');
20
21    try {
22        mysqli_stmt_attr_get($stmt, -100);
23    } catch (\ValueError $e) {
24        echo $e->getMessage() . \PHP_EOL;
25    }
26
27    foreach ($valid_attr as $attr) {
28        try {
29            mysqli_stmt_attr_get($stmt, $attr);
30        } catch (Throwable $exception) {
31            echo $exception->getMessage() . "\n";
32        }
33    }
34
35    $stmt->close();
36
37    foreach ($valid_attr as $attr) {
38        try {
39            mysqli_stmt_attr_get($stmt, $attr);
40        } catch (Throwable $exception) {
41            echo $exception->getMessage() . "\n";
42        }
43    }
44
45    mysqli_close($link);
46    print "done!";
47?>
48--CLEAN--
49<?php
50    require_once 'clean_table.inc';
51?>
52--EXPECT--
53mysqli_stmt_attr_get(): Argument #2 ($attribute) must be either MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH or MYSQLI_STMT_ATTR_CURSOR_TYPE
54mysqli_stmt object is already closed
55mysqli_stmt object is already closed
56done!
57