9

Google検索のPDOでmysql_data_seekを使用したいのですが、次のようになります。

$row0 = $result->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 0);

しかし、それは機能しません、私が間違っていることは何ですか?これは私のコードです:

$query = "SELECT name,age FROM users";
$q = $db->prepare($query);
$q->execute();

$q->setFetchMode(PDO::FETCH_ASSOC);
$arrayData = $q->fetchAll();

foreach ($arrayData as $row){

    echo $row['name'] ." ";
    echo $row['age'] ."<br>";
}

$result = $q->fetch(PDO::FETCH_OBJ,PDO::FETCH_ORI_ABS,4);
var_dump($result);

最後に実行したクエリからオブジェクト形式で5行目を取得したいだけです。私はこのクエリを再度実行したくありません(一部の人が私に言ったように)私はSQLバッファからの結果が欲しいだけです。

var_dumpの結果は次のとおりです。bool(false)

何か案は?

編集:

あなたの答えに感謝し、申し訳ありませんが、多分私も自分自身を説明しません。私はJSONのトリックが好きですが、要点は5行目が例であるということです。通常のmysqlでmysql_data_seekを使用して行ったのとまったく同じように、PDOを使用してバッファーからのクエリの結果を使用したいだけです(カーソルを変更します)。出来ますか?私はすべてのトリックが好きですが、それは私が探しているものではありません。

4

4 に答える 4

8

PDO'cursor 'のデフォルトは PDO::CURSOR_FWDONLYです。これは、mysql_data_seekでカーソルをゼロに戻す場合とは異なり、カーソルをゼロに戻すことができないことを意味します。

例:

$db->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));

このように使用する前に:

$row0 = $result->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 0);
于 2013-04-16T12:34:08.810 に答える
2
$result = $arrayData[4];

は、あなたが必要とすることすべてです。

于 2013-03-26T14:38:11.347 に答える
1

5行目の結果が必要な場合は、次のように実行できます。

$result = json_decode(json_encode($arrayData[4]), FALSE);
var_dump($result);

またはこのようなもの:

$object = new stdClass();
foreach ($array as $key => $value)
{
    $object->$key = $value;
}

ちょっと興味があるんだけど!なぜオブジェクトフォームが必要なのですか?

編集(これにより、5行目のオブジェクト形式が得られます):

$index = 0;
$fifthRow = new stdClass();
while($row = $q->fetch())
{
   if($index++==4)
        $fifthRow = json_decode(json_encode($row), FALSE);
}   
于 2013-03-26T12:53:24.407 に答える
1

あなたはこのようにそれを行うことができます:

$c = 1;
$saved=null; 
while($row = $q->fetch()){
    if($c==4){
        $saved = clone $row;
    };
    $c++;
    somethingelse;
}

$ savedには、余分なオーバーヘッド計算がほとんどないオブジェクトとして4番目の要素が含まれます。

于 2013-03-26T13:05:33.470 に答える