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

PDO - Hent Assoc i en 'mens'-løkke

Så ved at antage, at det eneste element, der nogensinde er set, er det sidste element, er det, fordi det, du returnerer, overskrives hver løkke. Der er et par muligheder for at løse dette. Det enkleste er:

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

Dette vil dog ikke fungere godt med din rigtige bootstrap html. Du skal sikre dig, at kolonnerne hænger rigtigt sammen.

Du skal bruge noget lidt mere intuitivt

Ved at bruge den faktiske kode ville det ligne

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

Nu i din funktion, uanset hvad det er, kan du gøre sådan noget (dette er ikke den mest elegante ting, jeg nogensinde har skrevet, men burde få jobbet gjort):

$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. SQL:søg efter en streng i hver varchar-kolonne i en database

  2. Hvilke fænomener forsøger MySQL at forhindre ved at låse hele tabellen ved udførelse af Delete-sætning med betingelsen på en ikke-indekseret kolonne

  3. MySQL Trigger kan ikke opdatere tabellen - får ERROR 1442

  4. Hvordan installeres Python MySQLdb-modulet ved hjælp af pip?