1--TEST--
2mysqli_stmt_data_seek()
3--EXTENSIONS--
4mysqli
5--SKIPIF--
6<?php
7require_once 'skipifconnectfailure.inc';
8?>
9--FILE--
10<?php
11    require 'table.inc';
12
13    if (!$stmt = mysqli_stmt_init($link))
14        printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
15
16    try {
17        mysqli_stmt_data_seek($stmt, 1);
18    } catch (Error $exception) {
19        echo $exception->getMessage() . "\n";
20    }
21
22    if (!mysqli_stmt_prepare($stmt, "SELECT id FROM test ORDER BY id"))
23        printf("[005] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
24
25    if (true !== ($tmp = mysqli_stmt_execute($stmt)))
26        printf("[006] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp);
27
28
29    $id = null;
30    if (!mysqli_stmt_bind_result($stmt, $id))
31        printf("[007] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
32
33    if (!mysqli_stmt_store_result($stmt))
34        printf("[008] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
35
36    if (!is_null($tmp = mysqli_stmt_data_seek($stmt, 2)))
37        printf("[009] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
38
39    if (!mysqli_stmt_fetch($stmt))
40        printf("[010] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
41
42    var_dump($id);
43
44    if (!is_null($tmp = mysqli_stmt_data_seek($stmt, 0)))
45        printf("[011] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
46
47    if (!mysqli_stmt_fetch($stmt))
48        printf("[012] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
49
50    var_dump($id);
51
52    if (!is_null($tmp = mysqli_stmt_data_seek($stmt, mysqli_stmt_num_rows($stmt) + 100)))
53        printf("[013] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
54
55    if (mysqli_stmt_fetch($stmt))
56        printf("[014] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
57
58    var_dump($id);
59
60    try {
61        mysqli_stmt_data_seek($stmt, -1);
62    } catch (\ValueError $e) {
63        echo $e->getMessage() . \PHP_EOL;
64    }
65
66    if (mysqli_stmt_fetch($stmt))
67        printf("[016] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
68
69    var_dump($id);
70
71    mysqli_stmt_close($stmt);
72
73    try {
74        mysqli_stmt_data_seek($stmt, 0);
75    } catch (Error $exception) {
76        echo $exception->getMessage() . "\n";
77    }
78
79    mysqli_close($link);
80    print "done!";
81?>
82--CLEAN--
83<?php
84    require_once 'clean_table.inc';
85?>
86--EXPECT--
87mysqli_stmt object is not fully initialized
88int(3)
89int(1)
90int(1)
91mysqli_stmt_data_seek(): Argument #2 ($offset) must be greater than or equal to 0
92int(1)
93mysqli_stmt object is already closed
94done!
95