mysqli_stmt::data_seek()
(PHP 5, PHP 7)
Seeks to an arbitrary row in statement result set
说明
面向对象风格
mysqli_stmt::data_seek(int $offset): void
过程化风格
mysqli_stmt_data_seek(mysqli_stmt$stmt,int $offset): void
Seeks to an arbitrary result pointer in the statement result set.
mysqli_stmt_store_result() must be called prior to mysqli_stmt_data_seek().
参数
- $stmt
仅以过程化样式:由mysqli_stmt_init()返回的 statement 标识。
- $offset
Must be between zero and the total number of rows minus one(0..mysqli_stmt_num_rows() 1).
返回值
没有返回值。
范例
Example #1 面向对象风格
<?php /* Open a connection */ $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = "SELECT Name, CountryCode FROM City ORDER BY Name"; if ($stmt = $mysqli->prepare($query)) { /* execute query */ $stmt->execute(); /* bind result variables */ $stmt->bind_result($name, $code); /* store result */ $stmt->store_result(); /* seek to row no. 400 */ $stmt->data_seek(399); /* fetch values */ $stmt->fetch(); printf ("City: %s Countrycode: %s\n", $name, $code); /* close statement */ $stmt->close(); } /* close connection */ $mysqli->close(); ?>
Example #2 过程化风格
<?php /* Open a connection */ $link = mysqli_connect("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = "SELECT Name, CountryCode FROM City ORDER BY Name"; if ($stmt = mysqli_prepare($link, $query)) { /* execute query */ mysqli_stmt_execute($stmt); /* bind result variables */ mysqli_stmt_bind_result($stmt, $name, $code); /* store result */ mysqli_stmt_store_result($stmt); /* seek to row no. 400 */ mysqli_stmt_data_seek($stmt, 399); /* fetch values */ mysqli_stmt_fetch($stmt); printf ("City: %s Countrycode: %s\n", $name, $code); /* close statement */ mysqli_stmt_close($stmt); } /* close connection */ mysqli_close($link); ?>
以上例程会输出:
City: Benin City Countrycode: NGA
参见
- mysqli_prepare() 准备执行一个 SQL 语句
Although the documentation says you must provide a number between 0 and count - 1, you can actually supply a negative number, which appears to be cast to positive (such as in abs()). For example: <?php $db = new mysqli('localhost', 'test', 'password', 'schema'); $db->multi_query(" SELECT * FROM ( SELECT 1 as 'position' UNION SELECT 2 as 'position' UNION SELECT 3 as 'position' UNION SELECT 4 as 'position' UNION SELECT 5 as 'position' ) as rows"); $result = $db->store_result(); for ($i = 0; $i < $result->num_rows; $i++) { $offset = $i; $result->data_seek($offset); var_dump("Seek offset is: {$offset}", $result->fetch_object()); } for ($i = 0; $i < $result->num_rows; $i++) { $offset = -$i; $result->data_seek($offset); var_dump("Seek offset is: {$offset}", $result->fetch_object()); }