1--TEST--
2mysqli_result->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    require('table.inc');
12
13    if (!$mysqli = new mysqli($host, $user, $passwd, $db, $port, $socket))
14    printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
15        $host, $user, $db, $port, $socket);
16
17    $res = new mysqli_result($mysqli);
18
19    try {
20        $res->data_seek(0);
21    } catch (Error $exception) {
22        echo $exception->getMessage() . "\n";
23    }
24
25    if (!$res = $mysqli->query('SELECT * FROM test ORDER BY id LIMIT 4', MYSQLI_STORE_RESULT))
26        printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
27
28    if (true !== ($tmp = $res->data_seek(3)))
29        printf("[007] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp);
30
31    $row = $res->fetch_assoc();
32    if (4 != $row['id'])
33        printf("[008] Expecting record 4/d, got record %s/%s\n", $row['id'], $row['label']);
34
35    if (true !== ($tmp = $res->data_seek(0)))
36        printf("[009] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp);
37
38    $row = $res->fetch_assoc();
39    if (1 != $row['id'])
40        printf("[010] Expecting record 1/a, got record %s/%s\n", $row['id'], $row['label']);
41
42    if (false !== ($tmp = $res->data_seek(4)))
43        printf("[011] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp);
44
45    try {
46        $res->data_seek(-1);
47    } catch (\ValueError $e) {
48        echo $e->getMessage() . \PHP_EOL;
49    }
50
51    $res->free_result();
52
53    if (!$res = $mysqli->query('SELECT * FROM test ORDER BY id', MYSQLI_USE_RESULT))
54        printf("[013] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
55
56    try {
57        var_dump($res->data_seek(3));
58    } catch (\Error $e) {
59        echo $e->getMessage() . \PHP_EOL;
60    }
61
62    $res->free_result();
63
64    try {
65        $res->data_seek(1);
66    } catch (Error $exception) {
67        echo $exception->getMessage() . "\n";
68    }
69
70    $mysqli->close();
71
72    print "done!";
73--CLEAN--
74<?php
75    require_once("clean_table.inc");
76?>
77--EXPECT--
78mysqli_result object is already closed
79mysqli_result::data_seek(): Argument #1 ($offset) must be greater than or equal to 0
80mysqli_result::data_seek() cannot be used in MYSQLI_USE_RESULT mode
81mysqli_result object is already closed
82done!
83