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