sql >> Base de Datos >  >> RDS >> Mysql

Cómo buscar 2 veces en MYSQL PDO sin FETCHALL

Retiro eso, parece que puedes usar los contenidos de orientación del cursor para seleccionar el resultado... el código de muestra viene... No he probado esto, así que es posible que tengas que jugar un poco. Esto también se basa en la suposición de que un PDO::FETCH_ORI_FIRST actúa como una búsqueda de datos y deja el cursor en la primera posición en lugar de devolverlo a lo que era antes.

$stmt = $pdo->prepare('SELECT id FROM table', array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
$stmt->execute();

$first = $pdo->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_FIRST);
$first_row = $first['id'];

// other stuff

// first iteration we rewind to the first record;
$cursor = PDO::FETCH_ORI_FIRST;

while (false !== ($row = $stmt->fetch(PDO::FETCH_ASSOC, $cursor))) {
   $id = $row['id'];
   // successive iterations we hit the "next" record
   $cursor = PDO::FETCH_ORI_NEXT; 
   echo $id;
}

No creo que pueda rebobinar una declaración... Suponiendo que estos bloques no estén separados por un montón de ID de lógica intermediaria, simplemente hágalo en el bucle.

$STH->setFetchMode(PDO::FETCH_COLUMN); // no need to pull an array
$count = 0;
while ($id = $STH->fetch()) {      
  if($count === 0) {
   $first_row = $id;
  }
  echo $id;
  $count++;
}