文字

mysqli_stmt::data_seek

mysqli_stmt_data_seek

(PHP 5)

mysqli_stmt::data_seek -- mysqli_stmt_data_seekSeeks to an arbitrary row in statement result set

说明

面向对象风格

void mysqli_stmt::data_seek ( int $offset )

过程化风格

void mysqli_stmt_data_seek ( mysqli_stmt $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

参见

  • mysqli_prepare() - Prepare an SQL statement for execution

用户评论:

[#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());
}

上一篇: 下一篇: