きっとできるに違いないと信じて格闘し、頭も使い、Googleも使い、結局時間の無駄だったってこと、ありますよね。
いやもう毎日、大小はあってもそんなことばかりやっています。
今回も同じマスタのデータを複数のリストボックスに表示したかっただけなのに。
マスタの件数が多いので、fetchAllして全部取ってこずにfetchしようとしてスクロール可能なカーソルを使ってみました。
MySQLで。
・prepare時
$pdo->prepare($query, array(PDO::ATTR_CURSOR => \PDO::CURSOR_SCROLL));
・fetch時
$pdo->prepare($query, array(PDO::ATTR_CURSOR => \PDO::CURSOR_SCROLL));
$i = 0;
while($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, $i){
echo "<option value='{$row["value"]}'>{$row["value"]}</option>";
$i++;
}
や、
$row = $this->branchStmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_FIRST);
echo "<option value='{$row["value"]}'>{$row["value"]}</option>";
while($row = $this->branchStmt->fetch()){
echo "<option value='{$row["value"]}'>{$row["value"]}</option>";
}
など。
他にもやった気がするけれど、もう思い出せません。
ついさっきのことだけれど。
そしてたどり着きました。
その先になにもない、地の果てに。
https://dev.mysql.com/doc/refman/5.1/en/cursors.html
「Nonscrollable: Can be traversed only in one direction and cannot skip rows」
えっ
https://bugs.php.net/bug.php?id=49017
「Unfortunately, MySQL does not support scrollable cursors.」
えっ
http://stackoverflow.com/questions/15637291/how-use-mysql-data-seek-with-pdo
・・・実はできるとか・・・いや、PDO::FETCH_ORI_*は全般に無理なんでしょう。
https://mariadb.com/kb/en/mariadb/cursor-overview/
MariDBもだめか。
地の果てでfetchAllしました。