Извлечение результатов из базы данных в PDO

1

Я разработал простую систему загрузки фотографий и комментариев. Когда я использую для каждого, он повторяет изображение. Например, если на фото есть 5 комментариев. Он повторяет фотографию 5 раз с 5 различными комментариями. Вместо одного изображения для 5 комментариев.

Я хочу 1 изображение с каждым комментарием. Как я могу получить все комментарии для каждой фотографии, не повторяя фотографию?

Я использую PDO, и вот PHP-код:

<?php
//This is for the images
$results = $connecDB->prepare("select image,caption,id from gallery order by id desc LIMIT $start, $limit ");
$results->execute(); 
$results = $results->fetchAll();

foreach($results as $results) {
    $pid=$results["id"];

    //This is for the comments
    $re= $connecDB->prepare("select * from comments  where pid = :pid order by id");
    $re->bindParam(':pid', $pid);
    $re->execute(); 

    foreach($re as $re) {
        $name=$re["name"];
        $comment=$re["comment"];
?>

<div class="item" id="item-<?php echo $results['id']?>">
    <p><img src="../upload/images/<?php echo $results['image']?>"  height="500px" width="500px"</p>
    <p><?php echo $results['caption']?></p>
    <div class="large-2 columns small-3"><font color="#3366ff"><?php echo $name?></font></div>
    <div class="large-10 columns"><p><?php echo $comment?></p></div>  
<?php}
}?>

Благодарю.

  • 0
    Можете ли вы приложить свой вывод здесь? Возможно изображение на выходе?
  • 0
    Вы не можете делать foreach ($results as $results) , поскольку вы перезаписываете свою начальную переменную $results . Должно быть что-то вроде foreach ($results as $result) , а затем использовать $result['id'] и т. Д. Внутри блока. Исправьте эту проблему и посмотрите, что у вас осталось. (то же самое с блоком foreach($re as $re) ...)
Показать ещё 3 комментария
Теги:
pdo

2 ответа

0
Лучший ответ

Вы зацикливали все внутри внутреннего цикла, попробуйте вот так.

<?php
//This is for the images
$results = $connecDB->prepare("select image,caption,id from gallery order by id desc LIMIT $start, $limit ");
$results->execute(); 
$results = $results->fetchAll();

foreach($results as $results) {
    $pid=$results["id"];
?>
    <div class="item" id="item-<?php echo $results['id']?>">
        <p><img src="../upload/images/<?php echo $results['image']?>"  height="500px" width="500px" /></p>
        <p><?php echo $results['caption']?></p>
    <?php
        //This is for the comments
        $re= $connecDB->prepare("select * from comments  where pid = :pid order by id");
        $re->bindParam(':pid', $pid);
        $re->execute(); 

        foreach($re as $re) {
            $name=$re["name"];
            $comment=$re["comment"];
    ?>
    <div class="large-2 columns small-3"><font color="#3366ff"><?php echo $name?></font></div>
    <div class="large-10 columns"><p><?php echo $comment?></p></div>  
    <?php}?>
    </div>
<?php}?>
  • 0
    Работает как магия. Спасибо.
  • 0
    пожалуйста
0

На самом деле вы не получаете результат в переменной $ re. После выполнения запроса вам нужно извлечь данные AllAll. Так же, как вы зацикливали все во внутреннем foreach.

foreach($results as $results) {
$pid=$results["id"];

//This is for the comments
$re= $connecDB->prepare("select * from comments  where pid = :pid order by id");
$re->bindParam(':pid', $pid);
$re->execute(); 
$comments = $re->fetchAll();

<div class="item" id="item-<?php echo $results['id']?>">
    <p><img src="../upload/images/<?php echo $results['image']?>"  height="500px" width="500px"</p>
    <p><?php echo $results['caption']?></p>
    <div class="large-2 columns small-3"><font color="#3366ff"><?php echo $name?></font></div>
  foreach($comments as $re) {
    $name=$re["name"];
    $comment=$re["comment"];
?>  
    <div class="large-10 columns"><p><?php echo $comment; ?></p></div>  
<?php}
}?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню