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

PDO – Pobierz Assoc w pętli „while”

Tak więc zakładając, że jedyny element, jaki kiedykolwiek widziano, jest ostatnim elementem, ponieważ to, co zwracasz, jest nadpisywane w każdej pętli. Istnieje kilka opcji rozwiązania tego problemu. Najprostszy to:

$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();

$text = "";
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $book_id = $row['id'];
    $book_title = $row['title'];
    $book_image = $row['image'];
    $book_amz = $row['amazon'];
    $book_desc = $row['description'];
    $book_rating = $row['rating'];
    $book_date = $row['date'];
    $book_author = $row['author'];
    $book_categorie = $row['categorie'];

    //String concatenation of text will 
    //give you one big string at the end to return.   
    $text .= "ID: '{$book_id}'";
}
return $text;

Jednak to nie będzie działać dobrze z twoim prawdziwym kodem html. Musisz się upewnić, że kolumny sumują się prawidłowo.

Potrzebujesz czegoś bardziej intuicyjnego

Przy użyciu rzeczywistego kodu wyglądałoby to mniej więcej tak

$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();

$bookEcho = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    $bookEcho[] = '<div class="col-md-3">
                   <div class="thumbnail">
                   <span>' . $book_title . '</span>
                   <img src="' . $book_image . '">
                   <div class="book-options">
                   <span>Bewertung</span><br/>
                   ' . $stars . '
                   <a href="books.php?id=' . $book_id . '" class="btn btn-read btn-block">Jetzt lesen</a>
                   </div>
                   </div>
                   </div>';
}
return $bookEcho;

Teraz w swojej funkcji, cokolwiek to jest, możesz zrobić coś takiego (nie jest to najbardziej elegancka rzecz, jaką kiedykolwiek napisałem, ale powinna wykonać zadanie):

$cols = 4;
$colCount = 1;
foreach ($bookEcho as $book){
    if($colCount == 0){//create a row}
    echo $book;
    $coolCount++;
    if($colCount == 0){end a row}
    if($colCount == 4){ $colCount = 0;}
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyeliminuj symbol % podczas używania skrobaka selenu (Python)

  2. Jak używać w klauzuli w podzapytaniu

  3. MySQL aktualizuje pole za pomocą zmiennej inkrementacyjnej

  4. jQuery + autouzupełnianie PHP

  5. Jak zbudować aplikację kolbową wokół już istniejącej bazy danych?