Mysql
 sql >> Database >  >> RDS >> Mysql

PDO - Recupera Assoc in un ciclo 'while'

Quindi supponendo che l'unico elemento mai visto sia l'ultimo elemento è perché ciò che stai restituendo viene sovrascritto ad ogni ciclo. Ci sono alcune opzioni per risolvere questo problema. Il più semplice è:

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

Tuttavia questo non funzionerà bene con il tuo vero html bootstrap. Devi assicurarti che le colonne si sommino correttamente.

Avrai bisogno di qualcosa di un po' più intuitivo

Usando il codice effettivo sembrerebbe qualcosa di simile a

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

Ora nella tua funzione, qualunque cosa sia, puoi fare qualcosa del genere (questa non è la cosa più elegante che abbia mai scritto ma dovrebbe portare a termine il lavoro):

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