Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tìm nạp 2 lần trong MYSQL PDO mà không cần FETCHALL

Tôi lấy lại điều đó, có vẻ như bạn có thể sử dụng các tiếp điểm hướng con trỏ để chọn kết quả ... mã mẫu sắp tới ... Tôi chưa thử điều này nên bạn có thể cần phải chơi một chút. Điều này cũng dựa trên giả định rằng một PDO::FETCH_ORI_FIRST hoạt động giống như data_seek và để con trỏ ở vị trí đầu tiên thay vì đưa con trỏ về vị trí cũ.

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

Tôi không nghĩ rằng bạn có thể tua lại một câu lệnh ... Giả sử các khối này không được phân tách bởi một loạt id logic trung gian, chỉ cần làm điều đó trong vòng lặp.

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi nghiêm trọng:Vui lòng đọc phần Bảo mật của sách hướng dẫn để tìm hiểu cách chạy mysqld dưới dạng root

  2. Hoạt động không được phép sau khi ResultSet đóng (mysql, java)

  3. mysql chọn dấu thời gian giữa a và b trả về tất cả hoặc 0 dấu thời gian

  4. Khóa ngoại MySQL khi xóa

  5. Tôi có thể chạy tệp sql trên phiên bản Google Cloud Sql của mình bằng lệnh gcloud sql không