0

mysql から PDO への切り替え fetch メソッドが PDO オブジェクト自体を変更することに気付きました! 例えば:

$res=$ps->fetchAll();
echo($res[0]['Mail']); //it'ok

//now i re-call the fetch method
$res=$ps->fetchAll();
echo($res[0]['Mail']); //no result!

なぜこれが起こるのですか?mysqlでは、私はこのことを見たことがありません

4

3 に答える 3

4

オブジェクトにはまだデータが含まれていますが、現在のレコードへの内部ポインタを保持しています。結果セットからレコードをフェッチするたびに、ポインターは次の行に進みます。

の場合fetchAll()、ポインターは結果セットの最後まで進んでいるため、後続のfetchAll()呼び出しは結果を返しません。

再度呼び出す必要がある場合はfetchAll()、ポインターを結果セットの先頭に巻き戻すことができます。これは、バッファリングされたクエリで実行できます。

$ps->setAttribute(PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
$ps->rewind();
$ps->fetchAll();
于 2013-05-18T11:27:38.547 に答える
1

fetch残りの/利用可能なすべての行を返し、それ以上利用可能な行がない場合は を返しFALSEます。およびfetchAllは、1 回の試行で使用可能なすべての行を返しますFALSE。結果セットにデータが残っていないため、後続の呼び出しは を返します。

上記の例の配列を再利用でき$resます。

于 2013-05-18T11:27:52.810 に答える