Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO - Abrufen von Assoc in einer 'while'-Schleife

Gehen Sie also davon aus, dass das einzige Element, das jemals gesehen wurde, das letzte Element ist, weil das, was Sie zurückgeben, in jeder Schleife überschrieben wird. Es gibt einige Möglichkeiten, dies zu beheben. Das einfachste ist:

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

Dies funktioniert jedoch nicht gut mit Ihrem echten Bootstrap-HTML. Sie müssen sicherstellen, dass sich die Spalten richtig addieren.

Sie brauchen etwas intuitiveres

Unter Verwendung des tatsächlichen Codes würde es in etwa so aussehen:

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

Jetzt können Sie in Ihrer Funktion, was auch immer es ist, so etwas tun (das ist nicht das eleganteste, was ich je geschrieben habe, aber es sollte die Arbeit erledigen):

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