1--TEST--
2mysqli_stmt_data_seek()
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_data_seek()))
17        printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
18
19    if (!is_null($tmp = @mysqli_stmt_data_seek($link)))
20        printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
21
22    require('table.inc');
23
24    if (!$stmt = mysqli_stmt_init($link))
25        printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
26
27    if (false !== ($tmp = mysqli_stmt_data_seek($stmt, 1)))
28        printf("[004] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
29
30    if (!mysqli_stmt_prepare($stmt, "SELECT id FROM test ORDER BY id"))
31        printf("[005] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
32
33    if (true !== ($tmp = mysqli_stmt_execute($stmt)))
34        printf("[006] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp);
35
36
37    $id = null;
38    if (!mysqli_stmt_bind_result($stmt, $id))
39        printf("[007] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
40
41    if (!mysqli_stmt_store_result($stmt))
42        printf("[008] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
43
44    if (!is_null($tmp = mysqli_stmt_data_seek($stmt, 2)))
45        printf("[009] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
46
47    if (!mysqli_stmt_fetch($stmt))
48        printf("[010] [%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, 0)))
53        printf("[011] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
54
55    if (!mysqli_stmt_fetch($stmt))
56        printf("[012] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
57
58    var_dump($id);
59
60    if (!is_null($tmp = mysqli_stmt_data_seek($stmt, mysqli_stmt_num_rows($stmt) + 100)))
61        printf("[013] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
62
63    if (mysqli_stmt_fetch($stmt))
64        printf("[014] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
65
66    var_dump($id);
67
68    if (false !== ($tmp = mysqli_stmt_data_seek($stmt, -1)))
69        printf("[015] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
70
71    if (mysqli_stmt_fetch($stmt))
72        printf("[016] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
73
74    var_dump($id);
75
76    mysqli_stmt_close($stmt);
77
78    if (false !== ($tmp = mysqli_stmt_data_seek($stmt, 0)))
79        printf("[017] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
80
81    mysqli_close($link);
82    print "done!";
83?>
84--CLEAN--
85<?php
86    require_once("clean_table.inc");
87?>
88--EXPECTF--
89Warning: mysqli_stmt_data_seek(): invalid object or resource mysqli_stmt
90 in %s on line %d
91int(3)
92int(1)
93int(1)
94
95Warning: mysqli_stmt_data_seek(): Offset must be positive in %s on line %d
96int(1)
97
98Warning: mysqli_stmt_data_seek(): Couldn't fetch mysqli_stmt in %s on line %d
99done!
100