繁体   English   中英

在PHP MySQL中循环

[英]loop within loop in PHP MySQL

我在MySql中创建了两个表,一个表保存了博客内容,另一个表保存了博客ID和不同的图片路径。 我在一个postID中保存了多张图片。 现在,我试图同时获取图片和博客文章,但无法正常工作。 下面的代码...

blogposts.php

<?php
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($conn,"SELECT  * , upload_data.FILE_NAME from blog_posts LEFT JOIN upload_data ON blog_posts.postID=upload_data.postID  ; ");
while($row = mysqli_fetch_array($result)) 
{?>

  <div class="b-slider j-smallslider" data-height="382">
                    <ul><?php 
                    if (!empty($FILE_NAME)) {
                   $result = mysqli_query($conn,"SELECT  * from upload_data where postID=postID ; ");
                while($row = mysqli_fetch_array($result)) 

                    {?>
                            <li data-transition="3dcurtain-vertical" data-slotamount="12">
                            <img data-retina src="articles/user_data/<?php echo( htmlspecialchars( $row['FILE_NAME'] ) ); ?>">
                        </li> <?php }} ?>
                     </ul>
                </div>
 <div class="b-blog-one-column__info">
        Title : <a href="#" class="f-more"><?php echo( htmlspecialchars( $row['postTitle'] ) ); ?></a>, <a href="#" class="f-more"><?php echo( htmlspecialchars( $row['postCat'] ) ); ?></a>
        <span class="b-blog-one-column__info_delimiter"></span>
        Tag : <a href="#" class="f-more">Nllam</a>
        <span class="b-blog-one-column__info_delimiter"></span>
        <a href="#" class="f-more f-primary"><i class="fa fa-comment"></i>12 Comments</a>
    </div>
<?php } ?>

问题是我无法获取照片。 :(

使用此查询

$result = mysqli_query($conn,"SELECT  blog_posts.* , upload_data.FILE_NAME from blog_posts,upload_data WHERE blog_posts.postID=upload_data.postID");

然后使用print_r()函数打印结果,并检查其获取结果与否。

SELECT blog_posts.*, group_concat(upload_data.FILE_NAME) FROM `blog_posts` 
LEFT JOIN upload_data on blog_posts.postID = upload_data.postID 
GROUP BY blog_posts.postID

像这样尝试,如果您有图片,您将获得帖子行数和逗号分隔的文件名。 然后应用逻辑以显示结果。 您需要的任何帮助。 别问我。

希望这项工作;

$post_id = 1337;
$conn = new PDO(......); //get connection
$conn->query('SET group_concat_max_len = 4096;');
$query = "SELECT  bp.* , 
            (SELECT GROUP_CONCAT(ud.FILE_NAME SEPARATOR ',')   
             from upload_data ud where ud.postID=bp.postID) as files
          FROM blog_posts bp 
          WHERE bp.postID=:post_id ;";
$result = $conn->prepare($query);
$result->bindParam(":post_id", $post_id);
$result->execute();

//don't really need while for one row but oh well
while($row = $result->fetch()){

    $files=$row['files'];
    $files = empty($files) ? [] : explode(',', $files);
    ?>

    <div class="b-slider j-smallslider" data-height="382">
            <ul>
            <?php foreach ($files as $file){?>
                <li data-transition="3dcurtain-vertical" data-slotamount="12">
                    <img data-retina src="articles/user_data/<?php echo( htmlspecialchars( $file ) ); ?>">
                </li> 
            <?php } ?>
            </ul>
    </div>
    <div class="b-blog-one-column__info">
        Title : <a href="#" class="f-more"><?php echo( htmlspecialchars( $row['postTitle'] ) ); ?></a>, <a href="#" class="f-more"><?php echo( htmlspecialchars( $row['postCat'] ) ); ?></a>
        <span class="b-blog-one-column__info_delimiter"></span>
        Tag : <a href="#" class="f-more">Nllam</a>
        <span class="b-blog-one-column__info_delimiter"></span>
        <a href="#" class="f-more f-primary"><i class="fa fa-comment"></i>12 Comments</a>
    </div>
<?php } ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM