Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP PDO z foreach i fetch

PDOStatement (które masz w $users ) jest kursorem do przodu. Oznacza to, że po spożyciu (pierwszy foreach iteracji), nie zostanie przewinięty do początku zestawu wyników.

Możesz zamknąć kursor po foreach i ponownie wykonaj instrukcję:

$users       = $dbh->query($sql);
foreach ($users as $row) {
    print $row["name"] . " - " . $row["sex"] . "<br/>";
}

$users->execute();

foreach ($users as $row) {
    print $row["name"] . " - " . $row["sex"] . "<br/>";
}

Lub możesz buforować za pomocą dostosowanego CachingIterator z pełną pamięcią podręczną:

$users       = $dbh->query($sql);

$usersCached = new CachedPDOStatement($users);

foreach ($usersCached as $row) {
    print $row["name"] . " - " . $row["sex"] . "<br/>";
}
foreach ($usersCached as $row) {
    print $row["name"] . " - " . $row["sex"] . "<br/>";
}

znajdziesz CachedPDOStatement klasa jako istota . Iterator buforowania jest prawdopodobnie bardziej rozsądny niż przechowywanie zestawu wyników w tablicy, ponieważ nadal oferuje wszystkie właściwości i metody PDOStatement obiekt, który zawinął.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ADDDATE() vs DATE_ADD() w MySQL:jaka jest różnica?

  2. Jak mogę postawić dwa warunki w posiadaniu klauzuli?

  3. mysql_query() oczekuje, że parametr 2 będzie zasobem, łańcuch podany w

  4. najlepsze wózki na zakupy e-commerce dla programisty Zend Framework

  5. Jak działa funkcja UPPER() w MySQL