sql >> Database >  >> RDS >> Mysql

PDO - Assoc ophalen in een 'while'-lus

Dus als je ervan uitgaat dat het enige element dat ooit is gezien, het laatste element is, is dat omdat wat je retourneert, elke lus wordt overschreven. Er zijn een paar opties om dit op te lossen. De eenvoudigste is:

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

Dit zal echter niet goed werken met uw echte bootstrap-html. Je moet ervoor zorgen dat de kolommen goed optellen.

Je hebt iets meer intuïtief nodig

Met de daadwerkelijke code zou het er ongeveer zo uitzien

$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, in je functie, wat het ook is, je kunt zoiets doen als (dit is niet het meest elegante wat ik ooit heb geschreven, maar zou de klus moeten klaren):

$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. Is normalisatie in dit geval vereist?

  2. ORA-12505, TNS:luisteraar kent momenteel geen SID gegeven in connect descriptor

  3. T-SQL:In tegenstelling tot tekenreeksaaneenschakeling - hoe tekenreeks in meerdere records te splitsen

  4. Mysql-gebruikersgegevens wijzigen en opslaan in een weergavetabel die de gegevens van een gebruiker weergeeft