sql >> Databasteknik >  >> RDS >> Mysql

Hur man hämtar 2 gånger i MYSQL PDO utan FETCHALL

Jag ser att det ser ut som att du kan använda markörens orienteringskontanter för att välja resultatet... exempelkod kommer... Jag har inte provat detta så du kan behöva spela lite. Detta är också baserat på antagandet att en PDO::FETCH_ORI_FIRST fungerar som en datasökning och lämnar markören på den första positionen i stället för att återställa den till vad den var tidigare.

$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;
}

Jag tror inte att du kan spola tillbaka ett uttalande... Förutsatt att dessa block inte är åtskilda av ett gäng mellanliggande logiska id, gör det bara i slingan.

$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++;
}


  1. Hur man formaterar datum i Oracle

  2. Enklaste sättet för PHP e-postverifieringslänk

  3. org.json.JSONException:Värde <br av typen java.lang.String kan inte konverteras till JSONObject

  4. isset()-funktionen returnerar true även när objektet inte är inställt