©
This document uses PHP Chinese website manual Release
(PHP 5)
mysqli_stmt::data_seek -- mysqli_stmt_data_seek — Seeks to an arbitrary row in statement result set
面向对象风格
$offset
)过程化风格
$stmt
, int $offset
)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
$mysqli = new mysqli ( "localhost" , "my_user" , "my_password" , "world" );
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 )) {
$stmt -> execute ();
$stmt -> bind_result ( $name , $code );
$stmt -> store_result ();
$stmt -> data_seek ( 399 );
$stmt -> fetch ();
printf ( "City: %s Countrycode: %s\n" , $name , $code );
$stmt -> close ();
}
$mysqli -> close ();
?>
Example #2 过程化风格
<?php
$link = mysqli_connect ( "localhost" , "my_user" , "my_password" , "world" );
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 )) {
mysqli_stmt_execute ( $stmt );
mysqli_stmt_bind_result ( $stmt , $name , $code );
mysqli_stmt_store_result ( $stmt );
mysqli_stmt_data_seek ( $stmt , 399 );
mysqli_stmt_fetch ( $stmt );
printf ( "City: %s Countrycode: %s\n" , $name , $code );
mysqli_stmt_close ( $stmt );
}
mysqli_close ( $link );
?>
以上例程会输出:
City: Benin City Countrycode: NGA
[#1] phpnet at stuffonmylaptop dot com [2011-11-23 15:25:40]
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());
}